Вот пример: https://stackblitz.com/edit/angular-xvmi8t
У меня есть этот модуль с отложенной загрузкой для дополнительного маршрута, использующий loadChildren
в модуле базового приложения, и дочерние маршруты этого модуля с отложенной загрузкой динамически настраиваются при создании этого модуля:
@NgModule({
imports: [RouterModule.forChild([]), CommonModule],
declarations: [LazyComponent, TestComponent, DefaultComponent],
entryComponents: [LazyComponent, TestComponent, DefaultComponent]
})
export class LazyModule {
constructor(private router: Router) {
const config: Route = router.config.find(r => r.path === 'lazypage');
if (config) {
config.children = [
{
path: '', component: LazyComponent, children: [
{
path: 'itemA', children: [
{ path: 'item1', component: TestComponent },
{ path: 'item2', component: TestComponent },
{ path: '', component: DefaultComponent }
]
},
{
path: 'itemB', children: [
{ path: 'item1', component: TestComponent },
{ path: 'item2', component: TestComponent },
{ path: '', component: DefaultComponent }
]
},
{
path: 'itemC', children: [
{ path: 'item1', component: TestComponent },
{ path: '', component: DefaultComponent }
]
},
{
path: '', component: DefaultComponent
}
]
}
];
}
}
}
Работает нормально, если я захожу на дополнительный маршрут, который сначала загружает этот ленивый загруженный модуль, а затем посещаю один из дочерних маршрутов. Но исключение выдается, когда я впервые посещаю один из дочерних маршрутов (через прямой ввод URL). Интересно, почему и как решить эту проблему?