Angular:当输入已更改时,更新检测OnPush的父级的子级

时间:2018-08-09 15:36:09

标签: angular angular-changedetection

我遇到了更新某些父对象的子组件并将其检测策略设置为OnPush的问题。

设置了一个演示问题的小型应用here on StackBlitz

子组件中的某些动作通过事件发射器的输出传递到其OnPush父对象,后者又将另一个事件发送给“祖父母”。然后,祖父母或外祖父母会更新一些容器属性(容器ref保持不变)。

当我从OnPush组件内部执行此操作时,将重新渲染所有使用change属性的子级,在那里没有问题。

当我使用不在OnPush组件中的组件来执行此操作时,其子项不会更新,除非我在其中执行了某些操作(例如,在演示应用程序中单击“无用按钮”)。

问题:

  1. 为什么它会那样工作?两种情况下的更新方案似乎都是相同的(我不更改OnPush的输入参考)。
  2. 如何正确设置此结构,以便在第二种情况下进行更新?

现在,我在OnPush父级上设置了一个附加输入,该输入将属性本身作为另一个输入,子级使用该输入值作为输入。但这似乎不是处理此问题的正确方法。

0 个答案:

没有答案