首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无观测角的ExpressionChangedAfterItHasBeenCheckedError

无观测角的ExpressionChangedAfterItHasBeenCheckedError
EN

Stack Overflow用户
提问于 2022-01-10 10:38:52
回答 1查看 72关注 0票数 1

关于角10,我有一个奇怪的问题。我经常得到这个错误"ExpressionChangedAfterItHasBeenCheckedError".。我见过很多人都有这个问题,我试着实现和他们一样的东西,但仍然无法修复我的问题。

因此,目前这个错误发生在两个组件上。

DocumentTabsComponent上的第一个错误:

代码语言:javascript
复制
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中的建议检测中的更改,但是它没有起作用。

代码语言:javascript
复制
    /**
     * 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();
    }

另外,我看到了一些使用异步管道的解决方案,我也尝试过这样做。没起作用。

EN

Stack Overflow用户

发布于 2022-01-10 11:27:18

您可以在您的孩子中使用这一行:

changeDetection: ChangeDetectionStrategy.OnPush

或者:

代码语言:javascript
复制
if(!this.cdRef['destroyed']){ // or if (!(<ViewRef>this.cdRef).destroyed) {
     this.cdRef.detectChanges();
 }
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70651066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档