为什么在[值]改变时不会发生变化检测?

时间:2017-02-17 08:52:11

标签: angular

这是我的傻瓜:https://plnkr.co/edit/QPqciUngXeby2uECbokx?p=preview (您可能必须单击停止并运行几次才能正确加载)

表格没有变化。

但是当你采取

changeDetection: ChangeDetectionStrategy.OnPush

out,表格改变了。

我的理解是,使用OnPush,当@Input更改时,更改检测将触发。在这种情况下,@ Input是[value],它链接到this.testData。

为什么不改变?

1 个答案:

答案 0 :(得分:1)

因为当更改输入或处理了收听的事件时,onPush更改检测会运行。

如果更改this.testData,则需要更改检测以运行以更新[value]="testData"绑定。如果发生这种情况,更改检测将针对<p-dataTable>运行,因为其输入已更改。

App上没有任何输入已更改,因此没有更改检测。

您可以使用App

标记ChangeDetectorRef.markForCheck()以进行检查

Plunker example