首页 > 解决方案 > RouterModule:路由器实例

问题描述

我希望在我的子模块中访问 RouterModule 指令(routerLink),但我没有任何路由可以添加到 forChild 方法中。我应该以哪种方式在我的@NgModule 类中导入RouterModule 而不获取Router 的另一个实例(已经通过RouterModule.forRoot(ROUTES)在根应用程序模块中实例化):

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

或者

@NgModule({
  imports: [RouterModule]
})

两者似乎都适用于我的应用程序。我只是不确定服务实例是否发生了两次。

我已经阅读了文档的这两个条目:

结果是根应用程序模块导入 RouterModule.forRoot(...) 并获得一个路由器,而所有路由组件都导入不包括路由器的 RouterModule。[1]

和:

对于子模块和延迟加载的子模块,该模块应按如下方式使用[2]

  @NgModule({
    imports: [RouterModule.forChild(ROUTES)]
  })
  class MyNgModule {}

标签: angularangular2-routing

解决方案


不导入RouterModule就不能拥有routerLink指令。您只需将其导入子模块而不调用RouterModule.forChild()方法。

为了更好地理解forRoot()forChild(),请参考以下链接:

RouterModule.forRoot(ROUTES) 与 RouterModule.forChild(ROUTES)

避免与 Angular 中的模块的常见混淆


推荐阅读