为什么变化检测不会发生在这里的时候[值]改变了吗?(Why is change detection

2019-09-29 20:47发布

这里是我的plunker: https://plnkr.co/edit/QPqciUngXeby2uECbokx?p=preview (您可能需要点击停止和运行几次才能正常加载)

该表没有改变。

但是,当你走

changeDetection: ChangeDetectionStrategy.OnPush

出,该表的变化。

我的理解是,随着OnPush,当@input变化,变化检测将闪光。 在这种情况下,是@input [值],它链接到this.testData。

为什么不改变?

Answer 1:

因为与onPush变化检测运行时,一个输入被改变或当被处理已被侦听到的事件。

如果更改this.testData ,然后更改检测需要运行更新[value]="testData"结合。 如果出现这种情况,变化检测将运行<p-dataTable>因为它的输入改变了。

有上没有输入App已经改变,因此没有变化检测。

您可以标记App使用支票ChangeDetectorRef.markForCheck()

Plunker例子



文章来源: Why is change detection not happening here when [value] changed?
标签: angular