是否可以使用Angular RouterModule而无需使用.forRoot()导入它?

时间:2017-12-19 09:48:51

标签: angular angular-ui-router

我想要实现的是让我的AppRoutingModule不知道实际的应用程序路由列表。

forRoot调用需要路由列表,样本以这种方式使用它:

@NgModule({
    imports: [RouterModule.forRoot(myRoutes)],
    exports: [RouterModule]
})
export class AppRoutingModule {
}

强制AppRoutingModule了解myRoutes。但它应该是相反的,我需要的是从appRoutingModule.AddRoutes(myRoutes)等应用程序模块初始化我的路由。

是否可以在导入时暂时RouterModule,但稍后通过方法调用?当我尝试在方法中而不是forRoot语句中调用imports时,它失败并显示错误。

1 个答案:

答案 0 :(得分:0)

  

是否可以在导入时初始化RouterModule,   但后来通过方法调用?

不,那是不可能的。当Angular编译模块时,它会合并其中定义的所有提供程序。阅读Avoiding common confusions with modules in Angular中的更多内容。 forRoot的{​​{1}}方法实际上定义了许多应用程序范围的提供程序,如RouterModuleLocationUrlSerializer等。这些提供程序需要在模块启动之前进行编译

  

让我的AppRoutingModule不知道实际的应用程序路由列表。

那么为什么不创建一个中间模块,然后将RouterPreloaderRouterModule连接在一起。