簡體   English   中英

Angular 2+ ExpressionChangedAfterItHasBeenCheckedError:表達式在檢查后已更改

[英]Angular 2+ ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked

我的應用有親子關系。 在父級中,我包括以下子級選擇器:

<app-chip-list [ocoChipItems]="getChipItems(row['status'])"></app-chip-list>

請注意,傳遞給子級的數據必須通過父級的getChipItems()方法中的邏輯導出。

盡管該應用程序似乎可以正常運行,但它在控制台中拋出“ ExpressionChangedAfterItHaHasBeenCheckedError:表達式已被檢查后更改”。

我通過在父組件的聲明中添加以下內容來解決此問題:

changeDetection: ChangeDetectionStrategy.OnPush

我不完全了解這是什么。 因此,我不確定這是否是合適的解決方案。

感謝您的反饋意見。

在我的應用程序中加載表格時,將在單元格上調用一個函數以確定其值。 這導致值從null更改為其他值,從而導致問題。 因此,我強制從表中加載數據后進行更改檢測。 這是通過預訂表的數據源上的屬性來完成的,該屬性在將數據加載到表中后會發出事件。

this.dataSource.loading$.subscribe(() => {
  this.cdr.detectChanges();
});

我將此代碼添加到ngOnInit()方法的末尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM