关于角10,我有一个奇怪的问题。我经常得到这个错误"ExpressionChangedAfterItHasBeenCheckedError".。我见过很多人都有这个问题,我试着实现和他们一样的东西,但仍然无法修复我的问题。
因此,目前这个错误发生在两个组件上。
DocumentTabsComponent上的第一个错误:
ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'ngIf: true'. Current value: 'ngIf: false'.
at viewDebugError (core.js:20397)
at expressionChangedAfterItHasBeenCheckedError (core.js:20385)第二个组件DropdownFilterComponent:
错误: ExpressionChangedAfterItHasBeenCheckedError:表达式检查后发生了更改。以前的值:“X-放置:底部”。当前值:“X-布局:左下角”。
以下是组件https://stackblitz.com/edit/angular-ivy-k3udtg?file=src/app/document-tabs/document-tabs.component.ts的文件
会有一些组件没有定义,因为我不能共享代码库。
我试着按照afterViewChecked中的建议检测中的更改,但是它没有起作用。
/**
* To avoid error "Expression has changed after it was checked"
*/
ngAfterViewChecked(): void {
console.log('view checked');
this.cdRef.detectChanges();
}
/* OR */
ngAfterViewInit(): void {
console.log('view init');
this.cdRef.detectChanges();
}另外,我看到了一些使用异步管道的解决方案,我也尝试过这样做。没起作用。
发布于 2022-01-10 11:27:18
您可以在您的孩子中使用这一行:
changeDetection: ChangeDetectionStrategy.OnPush
或者:
if(!this.cdRef['destroyed']){ // or if (!(<ViewRef>this.cdRef).destroyed) {
this.cdRef.detectChanges();
}https://stackoverflow.com/questions/70651066
复制相似问题