为什么更改NgOninit上的父级数据不会导致ExpressionChangedAfterItHaHasBeenCheckedError?

时间:2018-12-20 16:30:49

标签: angular

在此示例下

parentComponent {
  text = 'dsfsdf';
}

childComponent implements Oninit {
    @Input() text;
   ngOnInit() {
     this.text = 'something else';
    }
}

这为什么不引起ExpressionChangedAfterItHaHasBeenCheckedError?发生此错误的简单方法是什么?

1 个答案:

答案 0 :(得分:0)

这不会触发ExpressionChangedAfterItHasBeenCheckedError,因为更改@Input参数的值不会触发任何事件给父对象,因此根本不会重新呈现。

使此错误发生的简单方法:

<div>{{functionThatReturnsDifferentValueOnEveryCall()}}</div>

...

count = 0;

functionThatReturnsDifferentValueOnEveryCall() {
   return count++;
}