我试着这样做:
@Input() data: any[] = [];
在 ngOnInit 里面我看到undefined
:
ngOnInit() {
console.log(this.data);
}
因此,在下面的代码中,当我尝试获取长度时出现错误:return this.data.length;
因为它是未定义的。
为什么初始化默认不起作用?
@Input() data: any[] = [];
我试着这样做:
@Input() data: any[] = [];
在 ngOnInit 里面我看到undefined
:
ngOnInit() {
console.log(this.data);
}
因此,在下面的代码中,当我尝试获取长度时出现错误:return this.data.length;
因为它是未定义的。
为什么初始化默认不起作用?
@Input() data: any[] = [];
您需要使用OnChanges
角度指令。
export class AppComponent implements OnChanges {
...
ngOnChanges(changes: SimpleChanges) {
this.data = changes.data.currentValue; // fetch the current value
console.log(this.data);
}
...
}
更多关于这个指令的信息可以在docs中找到。
当 Angular(重新)设置数据绑定输入属性时做出响应。该方法接收当前和先前属性值的 SimpleChanges 对象。
在 ngOnInit() 之前以及一个或多个数据绑定输入属性更改时调用。
要接收更改,请执行以下操作:
ngOnChanges(changes: SimpleChanges) {
if (changes.data.currentValue) {
// Do Something with that data
}
}