0

我假设 @angular/core 中的“ApplicationRef_.prototype.tick()”需要在 Angular 2 RC4 中正确更新 DOM,(以及正确的早期版本)

在从 5 分钟快速入门示例 ( https://angular.io/guide/quickstart ) 创建的 angular 2 混合设置中,调用了此方法,但似乎最初只调用了有限次。

我在混合设置(ng1 和 ng2 使用 upgradeAdapter 一起工作)中并且仅在某些服务器中遇到更改检测问题。这使我深入研究变更检测。

我的问题是:什么会导致定期调用“ApplicationRef_.prototype.tick()”?似乎在我的组件工作的情况下,此方法是定期调用的,而不是像 5 分钟快速入门那样的有限时间。也许我需要强制这样做以确保它稳定运行。

抱歉,没有 plunker,因为我无法生成当前情况的简化版本

谢谢!

4

1 回答 1

-1

事实证明,ng2 升级适配器 RC.4 -> 2.0.1 final 存在错误。

upgrade_adapter.ts

ngZone.onMicrotaskEmpty.subscribe({
  next: (_: any) => ngZone.runOutsideAngular(() => rootScope.$evalAsync())
});

如果改为:

ngZone.onMicrotaskEmpty.subscribe({
  next: (_: any) => ngZone.run(() => rootScope.$evalAsync())
});

变化检测似乎有效。

一个缺点是:这将重新引入无限$rootScope.$digesthttps://github.com/angular/angular/issues/6385

于 2016-10-07T01:23:18.700 回答