ExpressionChangedAfterItHasBeenCheckedError解释
请向我解释为什么我一直收到这个错误: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.
显然,我只是在开发模式下获得它,它不会在我的生产版本中发生,但它非常烦人,而我根本不理解在我的开发环境中出现错误的好处 - 这些错误不会出现在prod上 - - 可能是因为我缺乏理解。
通常,修复很容易,我只是将错误导致代码包装在setTimeout中,如下所示:
setTimeout(()=> { this.isLoading = true;}, 0);
或者使用如下构造函数强制检测更改constructor(private cd: ChangeDetectorRef) {}
::
this.isLoading = true;this.cd.detectChanges();
但为什么我经常遇到这个错误?我想了解它,以便将来可以避免这些hacky修复。
陪伴而非守候
慕容森
相关分类