Angular 2 detectChanges vs setTimeout()

时间:2017-04-26 12:20:08

标签: angular settimeout angular2-changedetection

我面临关于角度2变化检测的问题。 我正在使用一个使用' onPush'策略并且我注意到它的子组件不会在更新时自行更新它们(它们本身也是' onPush')所以我添加了changeDetector.detectChanges( )到我的代码,它导致Maximum call stack size exceeded。 我踌躇了一点,结束了

setTimeout(() => {
  this.changeDetector.markForCheck();
}, 0);

代码运行得很好。 我的问题是为什么angular.detectChanges()导致此错误并使用setTimeout不要?如果我当前理解了setTimeout也应该运行changeDetection,那么它几乎一样,不是吗?

这样使用setTimout是一种好习惯吗?

0 个答案:

没有答案