Угловая Ленивая Загрузка в режиме aot / prod - PullRequest
0 голосов
/ 21 сентября 2018

я использую Angular 6 и существует два способа отложенной загрузки модулей в Angular:

Первый метод: укажите путь к модулю в виде строки

{path: 'debug', loadChildren: 'app/global/debug.module/debug.module#DebugModule'},

Второй метод: укажите модуль в качестве сигнатуры функции

{path: 'login', loadChildren: () => LoginMockModule},

В режиме разработки работает метод buth, но в режиме prod второй метод выдает мне следующую ошибку:

ERROR Error: Uncaught (in promise): Error: Runtime compiler is not loaded Error: Runtime compiler is not loaded

Может кто-нибудь объяснить, почему второй метод не работает в режиме Prod.Я хотел бы использовать этот режим, потому что

  1. Это менее подвержено ошибкам, потому что IDE может проверить, правильно ли импортирован Модуль
  2. Это сохранить для рефакторинга / перемещения модуля, потому чтоIDE знает, что импортированный модуль перемещен.

Спасибо за помощь

1 Ответ

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

Это повторяющаяся проблема на angith-cli Github ( Ссылка на выпуск GitHub ).Проблема заключается в использовании AOT, так как в режиме prod по умолчанию используется AOT.Вы можете найти это краткое объяснение, данное одним из разработчиков angular-cli:

Angular CLI поддерживает ленивое обнаружение маршрутов только через строковый синтаксис loadChildren, в то время как repro использует вместо этого функцию.Поскольку ленивый маршрут не обнаруживается и не компилируется через AOT, появляется эта ошибка.

Итак ... Осталось только надеяться, что он будет исправлен в следующих выпусках.А пока единственный способ будет использовать loadChildren.

...