首页 > 解决方案 > @Input 数组未定义

问题描述

我在父组件中实现了一个子组件,我将数据传递给子组件。但是当我尝试使用数组时,我总是得到一个未定义的。

我怎样才能解决这个问题?

export class SelectionFieldComponent implements OnInit {

  @Input() data: any[] = [];

  constructor() { }

  ngOnInit() {
    console.log(this.data);
  }
}

父组件.html

<app-selection-field [data]="units"></app-selection-field>

编辑:我在网站上看到了数据,但也得到了错误。

标签: angularinput

解决方案


这可能取决于您如何创建数据数组。

  • 如果它来自可观察的:

第一种实现OnChanges接口的解决方案。因为 observable 是data异步的,然后才解析到组件。所以你可能无法datangOnInit()方法中打印,因为data可能是在组件初始化之后。

ngOnChanges(changes: SimpleChanges): void {
    if (changes['data']) {
        this.data = changes['data'].currentValue;
    }
}

第二种解决方案
使用setTimeout()方法,但这是非常糟糕的做法。


  • 如果它是一个静态(硬编码)数组

它应该按原样工作。或者尝试使用上述相同的方法。


另请阅读有关组件生命周期的信息


推荐阅读