Ошибка дайджеста Angularjs при использовании с гибридным приложением - PullRequest
0 голосов
/ 17 сентября 2018

Итак, у меня довольно громоздкое гибридное приложение, использующее angularjs 1.7 и angular 5.x. Я использую модуль ngUpgrade для запуска обоих приложений, однако я столкнулся с проблемой, когда, если я использую href для перехода на другой маршрут (определенный в маршрутизаторе angularjs), я получаю цикл дайджеста, который уже выполняется, и он разрывает все приложение и ничего не загружается (я предполагаю, что angular работает вне зоны в этой точке). Мне удалось решить эту проблему для других событий (щелчок и т. Д.) С помощью $ 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 Ответ

0 голосов
/ 19 сентября 2018

Есть два способа загрузить гибридное приложение:

  1. UpgradeModule - загружает как AngularJS (v1), так и Angular (v6) каркасы в угловой зоне

  2. DowngradeModule - запускает AngularJS вне зоны Angular и разделяет две системы обнаружения изменений.

У меня были те же ошибки с $digest и пробовал оба пути. Чтобы избежать всех проблем с $digest и производительностью, вы должны использовать DowngradeModule.

Посмотрите на: https://github.com/angular/angular/issues/19299 и https://angular.io/guide/upgrade-performance

...