4

我试着这样做:

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

在 ngOnInit 里面我看到undefined

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

因此,在下面的代码中,当我尝试获取长度时出现错误:return this.data.length;

因为它是未定义的。

为什么初始化默认不起作用?

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

2 回答 2

3

您需要使用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() 之前以及一个或多个数据绑定输入属性更改时调用。

于 2019-08-05T09:56:29.920 回答
2

要接收更改,请执行以下操作:

ngOnChanges(changes: SimpleChanges) {
  if (changes.data.currentValue) {
    // Do Something with that data
  }
}
于 2019-08-05T10:13:28.683 回答