在Angular中使用changeDetection.markForCheck()的正确方法是什么



我使用markForCheck来检测我的角度分量(具有changeDetection: ChangeDetectionStrategy.OnPush(的变化,最初,我将markForCheck放在函数的开头,它对我有效,然后我意识到在所有函数操作完成后放它会更有意义。

在这两种方法中,如果最初调用angular或在动作完成后调用angular,则angular检测变化。

那么,如果有人能证明使用markForCheck的正确方法是什么呢?

functionName() { // It works at both places
this.cd.markForCheck();
//
.... Some Code that needs markForCheck ....
//
this.cd.markForCheck();
}

您使用markForCheck()告诉Angular"标记"在活动更改检测策略之外发生的更改。

当您使用默认的更改检测策略时,markForCheck()是不必要的,我想这就是为什么最初在哪里调用markForCheck()并不重要。

调用markForCheck()的正确位置是在具有ChangeDetectionStrategy.OnPush的组件内。之后,您所做的更改不会被OnPush更改检测检测到。

这里有一个更深入的解释,你可能会觉得有帮助,什么';markForCheck((和detectChanges((之间的区别是什么

编辑:我错误地说markForCheck((触发了更改检测,这是不正确的。感谢@Fatih Ersoy

u在更改某些数据和组件后需要使用this.cdr.markForCheck((属性更改检测:ChangeDetectionStrategy.OnPush

becouse在这种情况下组件将不会重新加载self-html模板如果某些子子子代组件具有"OnPush-parent";markForCheck(("也会重新绘制它们。如果在没有OnPush的子部件中改变的数据显示;markForCheck((">

在我的例子中,compA在html中有垫子表,所以在重新加载项目后,我调用markForCheck((来重新绘制垫子表

相关内容

  • 没有找到相关文章

最新更新