Ошибка при прямом посещении ленивым загруженным модулем дочернего маршрута в Angular 2 - PullRequest
0 голосов
/ 08 мая 2018

Вот пример: 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). Интересно, почему и как решить эту проблему?

...