相关疑难解决方法(0)

ExpressionChangedAfterItHasBeenCheckedError解释

请向我解释为什么我一直收到这个错误: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.

显然,我只是在开发模式下获得它,它不会在我的生产版本中发生,但它非常烦人,而我根本不理解在我的开发环境中出现错误的好处 - 不会出现在prod上 - - 可能是因为我缺乏理解.

通常,修复很容易,我只是将错误导致代码包装在setTimeout中,如下所示:

setTimeout(()=> {
    this.isLoading = true;
}, 0);
Run Code Online (Sandbox Code Playgroud)

或者使用如下构造函数强制检测更改constructor(private cd: ChangeDetectorRef) {}::

this.isLoading = true;
this.cd.detectChanges();
Run Code Online (Sandbox Code Playgroud)

但为什么我经常遇到这个错误?我想了解它,以便将来可以避免这些hacky修复.

angular2-changedetection angular2-databinding angular

243
推荐指数
18
解决办法
15万
查看次数