Рекурсивная маршрутизация вызывает ошибку превышения максимального стека

У меня есть PageModule который ссылается на себя в своем маршрутизации. Это работает, если я удаляю циклическую зависимость, запускаю приложение и затем добавляю его снова. Но не в том случае, если я остановлю сервер и начну его снова с уже существующей циклической зависимостью. Как я могу решить это?

У меня есть этот модуль маршрутизатора:

const routes: Routes = [
  {
    path: '',
    component: PageComponent,
    children: [
      {
        path: ':pageId',
        loadChildren: 'app/routes/+dashboard/routes/+pages/routes/+page/page.module#PageModule'
      }
    ]
  }
];

@NgModule({
  imports: [RouterModule.forChild(routes)]
})

export class PageRouterModule {}

Который затем импортируется в PageModule:

@NgModule({
  imports: [
    PageRouterModule
  ],
  exports: [PageRouterModule],
  declarations: [PageComponent]
})

export class PageModule {}

Очевидно это было предположительно исправлено, как показано здесь, но я обновил до последней версии Cli, которая 1.5.0 но проблема все еще там.

1 ответ

Решение

Я обнаружил, что изменяя эту строку:

loadChildren: 'app/routes/+dashboard/routes/+pages/routes/+page/page.module#PageModule'

Для того, чтобы:

loadChildren: loadModule

куда loadModule экспортируется function:

export function loadModule() {
  return PageModule;
}

В теории вы можете сделать () => PageModule тоже, но это приведет к лямбда-ошибке, поэтому вы должны использовать экспортированную функцию, как показано выше.

Я надеюсь, что это помогает кому-то еще.

Другие вопросы по тегам