首先 - 我知道有关此异常的很多帖子。我一直在阅读有关变化检测机制的内容 - 我有点理解,我的问题是什么。我只是不知道如何解决它。
我的页面呈现的是一个带有每行复选框的表格。用户可以检查任何数字并选择删除这些行。选定的行ID绑定到组件中的Map。在模态确认窗口中,所有选定的行都按公共标识符显示和分组(某些行具有相同的groupId)。
模态窗口中的表格是使用计算公共标识的地图的方法来呈现的,该方法包含具有该公共标识符的行列表:
getGroupedReportsMarkedForDeletion():Map<string, ReportRowEntryModel[]> {
let groupedReports: Map<string, ReportRowEntryModel[]> = new Map();
this.allReports.forEach(report => {
if(this.selectedReportsForDeletion.get(report.id)) {
if(groupedReports.has(report.groupId())) {
groupedReports.get(report.groupId()).push(report);
} else {
groupedReports.set(report.groupId(), [report]);
}
}
});
return groupedReports;
}
在初始渲染过程中,这显然是空的。我什么时候检查一行ExpressionChangedAfterItHasBeenCheckedError,引用包含*ngFor
迭代&#34; groupedReports&#34;
<div id="selectedReportsGroup_{{group}}" *ngFor="let group of getGroupedReportsMarkedForDeletion()?.keys()">
我该如何解决这个问题?任何建议赞赏:)
Angular:^ 5.0.2
AngularCli:1.5.3