Angular2 + Change检测:markForCheck还是detectChanges?

时间:2017-12-09 02:03:53

标签: angular

说,   - 有一个父组件A和一个子组件B.

  • 在组件B上设置OnPush。

  • 有一刻,B的属性不是输入绑定属性会改变,我想检测更改并相应地更新视图。

  • 根据我的理解,应该有2个选项。

    1. 在B上实现 ngDoCheck 挂钩并调用markForCheck方法,因为我们都知道属性的更改触发了来自A组件的更改检测流程,并且在此过程中,B中的ngDoCheck将被调用并且markForCheck将标记到A的路径(在这种情况下是根),以便尽管采用OnPush策略也可以触发其变化检测。

    2. 在属性更改时刻之后立即调用 detectChanges ,这解释了自己。

在我看来,两者都应该有效,但我想知道哪种方法更合适。

1 个答案:

答案 0 :(得分:0)

出于某种原因,选项2无效。

选项1( markForCheck )是解决此问题的方法。我正在对此进行一些研究,并随时向您发布调查结果!

感谢。