没有不可变对象的推送时的角度变化检测策略

问题描述 投票:2回答:1

我一直在阅读一些关于变化检测策略的文章,但我对在推送策略中使用哪些情况有一些疑问。基本上我的疑问是关于什么时候我们有嵌套组件绑定不是不可变的对象。我有两个嵌套组件,一个父组件和一个子组件,两者都在推送时具有更改检测策略。我作为formGroup的子组件的输入传递。

当我在父组件上将表单设置为启用,然后我调用ChangeDetectorRef.detectChanges()(应检查更改检测器及其子项)时,我没有看到子组件的更改(例如,子组件上的ngIf)在启用表单时显示内容)。

我做错了什么或不理解?

angular immutability angular-forms angular-changedetection
1个回答
3
投票

默认情况下,更新对象引用时会运行更改检测,这就是为什么只能在不可变对象上运行更改检测的原因。

当组件完全依赖于OnPush绑定时,您必须使用Input()更改检测策略。

你必须在子组件中的markForChange()内的ChangeDetectorRef上运行ngDoCheck()方法。

从媒介使用this link进一步了解我的答案。

我已经创建了一个项目并将其上传到GitHub,以用于您提到的场景。您可以将它用作参考。

© www.soinside.com 2019 - 2024. All rights reserved.