我正在實施以下* ngIf。我知道我不應該在技術上從*中調用一個函數ngIf,但它需要一個黑客:ExpressionChangedAfterItHasBeenCheckedError解決方法
<div *ngIf="!ddlAuthorsSelect2Bound && wireUpSelect2()"></div>
不管怎樣,下面的實現正常工作:
<div *ngIf="wireUpSelect2()"></div>
然而,由於某些原因這個* ngIf被多次調用。所以我在第一個代碼示例中添加了額外的成員變量檢查來防止附加的函數調用。這工作像預期的那樣好,但NG2寫入以下錯誤控制檯:
Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'true'. Current value: 'false'.
你知道的,我可以抑制這種錯誤的方法嗎?
我不知道如果我明白,ddlAuthorsSelect2Bound是一個'開關'來檢測wireUpSelect2()何時被調用或者當ngIf有效時? – Vega
嗨維加 - 對不起,我不清楚這一點。 ddlAuthorsSelect2Bound具有默認值false,但在wireUpSelect2()被調用後被設置爲true。由於* ngIf表達式被多次實現,wireUpSelect2()有一個guard子句,如果ddlAuthorsSelect2Bound設置爲true,則跳過連接邏輯。 – user8334943
wireUpSelect2()中檢查ddlAuthorsSelect2Bound值的方法如何?就像(ddlAuthorsSelect2Bound)返回一樣。一種'半解決方法'。 – Vega