递归路由导致最大堆栈超出错误

Recursive routing causes maximum stack exceeded error

我有一个 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 {}

显然这应该已修复 here,但我已经升级到最新的 cli 版本 1.5.0 但问题仍然存在。

我发现改变这一行:

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

收件人:

loadChildren: loadModule

其中 loadModule 是导出的 function:

export function loadModule() {
  return PageModule;
}

理论上您也可以 () => PageModule 但这会导致 lambda 错误,因此您必须使用如上所示的导出函数。

我希望这对其他人有帮助。