Я намеревался получить доступ к некоторым маршрутам с ленивой загрузкой, определенным в пользовательской расширенной библиотеке. Все было в порядке, пока мне не захотелось собрать производственный пакет (активный AOT). Сборка прошла, но когда я пытаюсь добраться до маршрута, я получаю эту ошибку в консоли браузера:
Uncaught Error: Uncaught (in promise): Error: Runtime compiler is not loaded
Error: Runtime compiler is not loaded
at e.Jr (main.41ff3398f5c3f189c836.js:1)
at t.project (main.41ff3398f5c3f189c836.js:1)
at t._tryNext (main.41ff3398f5c3f189c836.js:1)
...
Я предполагаю, что это связано с атрибутом loadChildren
, когда я собираю библиотеку, ng-packgr
не удалось с новым синтаксисом отложенной загрузки Angular 8, функцией стрелки (это известная проблема https://github.com/ng-packagr/ng-packagr/issues/1285).
Ленивые маршруты определяются в пользовательской библиотеке следующим образом:
export function getRouteModule() {
return RouteModule;
}
export const MAIN_APP_ROUTES: Routes = [
{
path: 'route',
loadChildren: getRouteModule
},
...
];
Затем в моем потребительском проекте:
@NgModule({
imports: [
BrowserModule,
LibraryModule,
RouterModule.forRoot(MAIN_APP_ROUTES, {useHash: true})
],
declarations: [
AppComponent
],
bootstrap: [AppComponent]
})
export class AppModule {
}
поэтому я попробовал несколько синтаксиса, старый в сочетании с библиотекой Angular должен быть отличным:
{
path: 'route',
loadChildren: '@MyLib/route/route.module#RouteModule'
},
...
но это не сработало.
Есть идеи ?