我想要实现的是让我的AppRoutingModule
不知道实际的应用程序路由列表。
forRoot
调用需要路由列表,样本以这种方式使用它:
@NgModule({
imports: [RouterModule.forRoot(myRoutes)],
exports: [RouterModule]
})
export class AppRoutingModule {
}
强制AppRoutingModule
了解myRoutes
。但它应该是相反的,我需要的是从appRoutingModule.AddRoutes(myRoutes)
等应用程序模块初始化我的路由。
是否可以在导入时暂时RouterModule
,但稍后通过方法调用?当我尝试在方法中而不是forRoot
语句中调用imports
时,它失败并显示错误。
答案 0 :(得分:0)
是否可以在导入时初始化RouterModule, 但后来通过方法调用?
不,那是不可能的。当Angular编译模块时,它会合并其中定义的所有提供程序。阅读Avoiding common confusions with modules in Angular中的更多内容。 forRoot
的{{1}}方法实际上定义了许多应用程序范围的提供程序,如RouterModule
,Location
,UrlSerializer
等。这些提供程序需要在模块启动之前进行编译
让我的AppRoutingModule不知道实际的应用程序路由列表。
那么为什么不创建一个中间模块,然后将RouterPreloader
和RouterModule
连接在一起。