angular - @Input 数组未定义
问题描述
我在父组件中实现了一个子组件,我将数据传递给子组件。但是当我尝试使用数组时,我总是得到一个未定义的。
我怎样才能解决这个问题?
export class SelectionFieldComponent implements OnInit {
@Input() data: any[] = [];
constructor() { }
ngOnInit() {
console.log(this.data);
}
}
父组件.html
<app-selection-field [data]="units"></app-selection-field>
编辑:我在网站上看到了数据,但也得到了错误。
解决方案
这可能取决于您如何创建数据数组。
- 如果它来自可观察的:
第一种实现OnChanges
接口的解决方案。因为 observable 是data
异步的,然后才解析到组件。所以你可能无法data
在ngOnInit()
方法中打印,因为data
可能是在组件初始化之后。
ngOnChanges(changes: SimpleChanges): void {
if (changes['data']) {
this.data = changes['data'].currentValue;
}
}
第二种解决方案
使用setTimeout()
方法,但这是非常糟糕的做法。
- 如果它是一个静态(硬编码)数组
它应该按原样工作。或者尝试使用上述相同的方法。
另请阅读有关组件生命周期的信息