我要实现的是让我的AppRoutingModule
不知道实际的应用程序路由列表。
forRoot
调用需要路由列表,示例按以下方式使用它:
@NgModule({
imports: [RouterModule.forRoot(myRoutes)],
exports: [RouterModule]
})
export class AppRoutingModule {
}
它迫使AppRoutingModule
意识到myRoutes
。但它应该是相反的,我需要的是像appRoutingModule.AddRoutes(myRoutes)
这样的应用程序模块初始化我的路由。
是否可以不是在导入时初始化RouterModule
,而是稍后通过方法调用初始化?当我尝试在方法而不是imports
语句中调用forRoot
时,它失败并出错。
导入时初始化路由器模块, 但后来通过方法调用?
不,这是不可能的。当 Angular 编译模块时,它会合并其中定义的所有提供程序。在避免与 Angular 中的模块的常见混淆中阅读更多内容。forRoot
RouterModule
方法实际上定义了许多应用程序范围的提供程序,如Location
、UrlSerializer
、RouterPreloader
等。这些提供程序需要在模块启动之前进行编译。
使我的 AppRoutingModule 不知道实际的应用程序路由列表。
那么为什么不创建一个中间模块,然后将RouterModule
和AppRoutingModule
链接在一起。