错误:RouterModule.forRoot() 调用了两次

ino*_*nik 2 angular angular-router

我有一个ListComponent需要在 2 个模块中使用的组件,其中一个是延迟加载的。所以我创建了声明 ListComponent 的 SharedModule。ListComponent 使用该routerLink指令,因此它需要 RouterModule。所以我导入了RouterModule,导致了这个错误。

core.js:1598 错误错误:未捕获(承诺):错误:RouterModule.forRoot() 调用了两次。延迟加载的模块应该使用 RouterModule.forChild() 代替。

全局搜索显示我只打了RouterModule.forRoot一次电话。我的延迟加载模块调用RouterModule.forChild并且是唯一的其他路由模块。

我使用完全相同的设置创建了一个 stackblitz,但无法重现该问题。它确实有效。尽管如此,我还是不明白我的项目有什么不同。https://stackblitz.com/edit/angular-shared-component-b

lea*_*iro 5

如果您只需要导入RouterModuleinSharedModule以使用指令,例如routerLink您可以像这样简单地导入它:

// ...
@NgModule({
  imports: [RouterModule], //  <-- without the .forRoot call
})
export class SharedModule { }
// ...
Run Code Online (Sandbox Code Playgroud)

确保在您的应用程序的基本模块(通常AppModule,或者可能AppRoutingModule在您的情况下)中导入它,RouterModule.forRoot(yourRoutes)以便使用的链接ListComponent正常工作。

RouterModule API 文档中查看更多信息

  • 原来问题是我不小心在我的延迟加载模块中导入了根 AppModule。 (3认同)