与混合应用程序一起使用时,Angularjs 摘要正在进行错误



所以,我有一个相当笨重的混合应用程序,使用angularjs 1.7和angular 5.x。 我正在使用 ngUpgrade 模块来运行这两个应用程序,但是我遇到了一个问题,如果我使用 href 导航到不同的路由(在 angularjs 路由器中定义(,我得到的摘要周期已经在进行中,它破坏了整个应用程序并且没有任何加载(我猜角度此时正在区域之外运行(。 我能够通过使用$timeout解决其他事件(单击等(的此问题,但我真的希望 href 现在工作。

core.js:1449 ERROR Error: [$rootScope:inprog] $digest already in progress 
https://errors.angularjs.org/1.7.3/$rootScope/inprog?p0=%24digest
at angular.js:138
at h (angular.js:19720)
at f.$digest (angular.js:19050)
at static.js:1508
at t.object.i [as _next] (core.js:4354)
at t.__tryOrUnsub (Subscriber.js:242)
at t.next (Subscriber.js:189)
at t._next (Subscriber.js:129)
at t.next (Subscriber.js:93)
at t.next (Subject.js:55)

有两种方法可以引导混合应用:

  1. UpgradeModule - 在 Angular 区域中引导 AngularJS (v1( 和 Angular (v6( 框架

  2. 降级模块 - 在 Angular 区域之外引导 AngularJS,并使两个变化检测系统保持独立。

我在$digest上遇到了同样的错误,并尝试了两种方式。为避免$digest和性能方面的所有问题,您应该使用DowngradeModule

看:https://github.com/angular/angular/issues/19299 和 https://angular.io/guide/upgrade-performance