angular - ExpressionChangedAfterItHasBeenCheckedError 的原因“检查后表达式已更改”
问题描述
我检查了一些文件,但在我的情况下我无法理解这个错误的原因。虽然它看起来很棒的文章: https ://blog.angular-university.io/angular-debugging/ ,但我无法理解。
让我详细介绍一下代码。
.html
<mat-tab-group>
<mat-tab label="My Cards">
<div class="cardList">
<ng-container *ngFor="let card of myCards; let i=index">
<app-card [cardItem]="card"
class="cardListItem"></app-card>
</ng-container>
</div>
</mat-tab>
<mat-tab label="Winning Cards">
<div class="cardList">
<ng-container *ngFor="let winningCard of winningCards; let i=index">
<app-card [cardItem]="winningCard"
class="cardListItem"></app-card>
</ng-container>
</div>
</mat-tab>
</mat-tab-group>
对于以下代码,
在使用前somefunction()
调用ngOnInit()
并this.myCards
已满
.ts(格式 1)
//fill myCards and winningCards
somefunction
{ ..........
this.winningCards= [...this.myCards];
}
收到错误“检查后表达式已更改”
.ts(格式 2)
//fill myCards and winningCards
somefunction
{ ..........
const myClonedArray: CardModel[] = Object.assign([], this.myCards);
this.winningCards = myClonedArray;
}
收到错误“检查后表达式已更改”
.ts(格式 3)
//fill myCards and winningCards
somefunction
{ ..........
this.winningCards = JSON.parse(JSON.stringify(this.myCards));
}
我没有收到错误,工作正常
因此,如果您考虑此代码,为什么在我使用时发生此错误
[...this.myCards];
或 在使用Object.assign([], this.myCards);
时未发生 此错误this.winningCards = JSON.parse(JSON.stringify(this.usedCards));
解决方案
推荐阅读
- postgresql - Postgres,如何迭代访问数据库中的所有表,子查询?
- docker - Kubernetes 描述 pod - 来自服务器的错误 (NotFound)
- android - SectionedRecyclerViewAdapter 动画
- amazon-web-services - 如何将代理添加到 s3,以便我可以使用托管在 EC2 实例中的服务?
- docker - 错误提案响应不成功,错误代码 500,名称为“cch16”的 msg 链码已存在
- javascript - Selenium-webdriver 无法使用 CSS 选择器找到元素
- javascript - 创建收藏夹列表 - 如何在单击时将项目从一个列表复制到另一个列表?
- c# - System.Collections.Generic.KeyNotFoundException 与元组键
- c++ - getline()函数的while循环如何在每次while循环结束后引入新的文本行
- python - 选择带有硒的选项