![](/img/trans.png)
[英]Angular change detection error: ExpressionChangedAfterItHasBeenCheckedError
[英]ExpressionChangedAfterItHasBeenCheckedError thrown on change detection when TemplatePortal attached to parents PortalOutlet
我有以下組件結構: App -> GrandParent -> Parent -> Child
。
<ng-template cdkPortal>
。 <ng-template cdkPortalOutput>
。 現在,如果ChildComponent附加了其portal屬性:
input[text]
,並將更改很好地傳播到TemplatePortal。 ExpressionChangedAfterItHasBeenCheckedError
。 input[text]
中的每個后續更新都會導致相同的錯誤。 TemplatePortal的狀態是“落后一步”(意思是 - 如果我在輸入中鍵入“abc”,則TemplatePortal中的值等於“ab”) Stackblitz: https ://stackblitz.com/edit/portal-cdk ? file = ssc %%Fapp%2Fchild%2Fchild.component.ts(取消注釋ChildComponent#ngOnInit
調用)
有人對這種行為有解釋嗎? 使用CDK門戶在PortalOutlet中顯示TemplatePortal的正確方法是什么,該PortalOutlet位於上面的幾個組件?
謝謝 !
我無法找到你的問題的解決方案,如果有人知道,我也很感興趣,但至少我為你創建了解決方法。 它不使用cdk-portal
,只使用Angular的viewContainerRef
,但我相信cdk-portal
使用類似的方法。
Stackblitz: https ://stackblitz.com/edit/portal-cdk-uiyxhn(取消注釋ChildComponent#ngOnInit
調用)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.