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

时间:2017-11-15 14:52:10

标签: angular typescript angular-cli angular-compiler

我有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,但问题仍然存在。

1 个答案:

答案 0 :(得分:0)

我发现改变了这一行:

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

要:

loadChildren: loadModule

其中loadModule是导出的function

export function loadModule() {
  return PageModule;
}

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

我希望这有助于其他人。