【问题标题】:angular2 change detection with CD classCD类的angular2变化检测
【发布时间】:2017-08-21 07:23:31
【问题描述】:

angular2如何执行变化检测默认策略?我浏览了一些与更改检测相关的帖子,并获得了一些细节,例如“angular2 为每个组件创建更改检测器”。

现在例如,如果我有 4 个组件(comp1、comp2 comp3 和 comp4)并且我更改了 comp4 属性,那么更改检测将通过所有组件或单个组件执行?

能否提供一些与上述信息相关的代码教程链接?

【问题讨论】:

  • 欢迎来到 StackOverflow。这个问题与 SO 无关,因为它是关于要求不鼓励的外部资源。对于直接答案,它非常广泛。如果您可以使其更具体,则可以回答。 “我更改 comp4 属性”信息不足。它还取决于这些组件是如何相关的(如果有任何绑定、共享服务,......)理想情况下,您应该创建一个 Plunker 来演示这种情况,然后询问有关它的具体问题。 Plunker 提供了一个现成的 Angular 4 模板。

标签: angular


【解决方案1】:

下面是详细的文章,可帮助您了解变更检测:

另见this answer

例如,如果我有 4 个组件(comp1、comp2、comp3 和 comp4)和 我更改了 comp4 属性,因此将通过执行更改检测 所有组件还是单个组件?

如果您因setTimeout 等异步操作而更改comp4 属性,则更改检测将从根级组件运行到子级组件。因此,您将对所有组件进行更改检测。

如果某些组件设置了ChangeDetectionStrategy.OnPush,如果输入绑定没有改变,它们将被跳过。

【讨论】:

  • @yurzui,一棵新年树)
  • 具有OnPush策略的组件将被检查一次,然后将等待一些条件被检查angular-opcxwh.stackblitz.io例如点击12将打开分支进行检查
  • @yurzui,是的,如果markForCheck 方法命中了这些组件,但如果没有,它们将不会被检查
猜你喜欢
  • 2017-06-03
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
  • 1970-01-01
  • 2016-06-15
  • 2016-11-23
相关资源
最近更新 更多