请向我解释为什么我不断收到此错误:ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.
显然,我只在开发模式下得到它,它不会在我的生产构建中发生,但它非常烦人,我根本不明白在我的开发环境中出现错误的好处不会出现生产上——可能是因为我缺乏理解。
通常,修复很简单,我只是将导致错误的代码包装在 setTimeout 中,如下所示:
setTimeout(()=> {
this.isLoading = true;
}, 0);
或者使用这样的构造函数强制检测变化:constructor(private cd: ChangeDetectorRef) {}
:
this.isLoading = true;
this.cd.detectChanges();
但为什么我总是遇到这个错误?我想了解它,以便将来可以避免这些 hacky 修复。
最佳答案
我遇到了类似的问题。看着 lifecycle hooks documentation ,我将 ngAfterViewInit
更改为 ngAfterContentInit
并且它起作用了。
关于angular - ExpressionChangedAfterItHasBeenCheckedError 解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43375532/