[英]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.