Angular ngOnChanges第一次无法读取属性

时间:2019-07-04 22:59:55

标签: angular

我正在尝试从输入到组件的数据访问,并使用ngOnChanges进行访问,但是在诸如"can not read property 'name' of undefined"之类的控制台中引发错误,但数据加载正确。

调试后,仅在刷新页面时才会发生此问题。第一次数据是不确定的,第二次数据正在加载。

我在这里做什么错了?

@Input() data: any;

 ngOnChanges(changes: any) {
    if(changes['data']) {
      this.dispEn = this.data.name.en;
      this.dispDe = this.data.name.en;
              }
  }

3 个答案:

答案 0 :(得分:2)

只需对数据进行测试以在数据确实具有值时捕获

ngOnChanges(changes: any) {
  if(changes['data'] && this.data) {
    this.dispEn = this.data.name.en;
    this.dispDe = this.data.name.en;
  }
}

答案 1 :(得分:0)

初始化组件时,第一次检查输入时,将触发OnChanges。您可以使用isFirstChange()

检查更改是否是第一个更改
 ngOnChanges(simpleChanges: SimpleChanges) {
    if (!simpleChanges.data.isFirstChange()) {
      ...
    }
  }

答案 2 :(得分:0)

最好在这里使用二传手

@Input('data) set dataInfo(dnfo: any){
   // ToDo method implementation
}