当我们谈论 Angular 2 中的变更检测机制时,每个人都建议使用NgZone或ChangeDetectorRef。
是否有任何工作示例application.tick()/ApplicationRef.tick()也做同样的事情ChangeDetectorRef/ NgZone。
第二个问题:API 说,在 DEV MODE 中,ApplicationRef.tick()多次运行更改检测。
有没有办法只运行一次。因为在我使用此方法的那一刻,我收到一条错误消息
ApplicationRef.tick() 被递归调用
我使用 tick() 遇到的问题的类似示例在此 Github 链接中
我已经完成了手动触发更改检测问题。
任何信息在这表示赞赏。谢谢。
我通过在 Zone JS 之外运行另一个更改检测进程成功地显式发出事件。
尽管正在运行更改检测,但错误:ApplicationRef.tick 被称为递归错误。
查看其API https://github.com/angular/angular/blob/4.4.3/packages/core/src/application_ref.ts#L347-L417
tick() 方法陷入 Try-Catch 块中并且无法继续最终因此抛出递归错误。563-576线
这是我在 Application.tick() 中调用的方法
public listenTeamOverview(assetName: string) {
console.log('parent : ' + assetName);
console.log('assetClass= ' + this.assetClass);
this.assetClass = assetName;
this.application.tick();
// setTimeout(function(app) {
// app.tick();
// }, 2000, this.application);
}
Run Code Online (Sandbox Code Playgroud)
只是想从概念上了解如何摆脱 tick() 方法的递归过程吗?
提前致谢