我'm facing an issue regarding angular 2 change detection. I'm使用了一个使用'onPush'策略的组件,我将') so I' onPush ') so I' ve添加了changeDetector.detectChanges()到我的代码中,它导致 Maximum call stack size exceeded . 我愣了一下,结束了

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

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

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