angular - 为什么更改检测不会在嵌套动态组件上触发
问题描述
我在使用内容投影对嵌套动态组件进行更改检测时遇到问题。更改检测不会在子组件上自动触发,我必须为每个操作添加手动更改检测。
这里的一个例子:https ://stackblitz.com/edit/angular-ivy-k2z661?file=src%2Fapp%2Fapp.component.ts
如您所见,如果单击按钮,则什么都不会显示,但是在this.cdr.detectChanges()
add() 函数上添加行时,会显示内容。另外,你可以注意到我没有使用
ChangeDetectionStrategy.OnPush
有没有办法在不到处添加手动更改检测的情况下实现这一目标?
解决方案
所以我终于找到了发生了什么。子视图需要手动附加到 appref。所以
private appRef: ApplicationRef
需要添加到构造函数,然后,附加子视图:
this.appRef.attachView(refChild.hostView);
我已经更新了 Stackblitz。
推荐阅读
- docker - 无法在 Synology NAS 中的 Docker 上运行 Gerrit
- ios - 如何格式化右侧相邻的两个 UIBarButtonItem?
- javascript - Should I run reoccuring event every 15 minutes from within mysql, or through javascript?
- unity3d - Pupil Labs 眼动追踪摄像头已设置,我的视频输入是否倒置?
- node.js - nodejs express如何发送到API不仅仅是请求,还有一个标题
- dvc - 恢复 dvc remove -p 命令
- html - 如何将 CSS unicode 字符串转换为文本字符?
- regex - 在excel字符串中从右侧提取第一个浮点数
- amazon-web-services - 输出和输出之间的区别
- python - 正则表达式捕获十进制模式一次或两次