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



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

forRoot调用需要路由列表,示例按以下方式使用它:

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

它迫使AppRoutingModule意识到myRoutes。但它应该是相反的,我需要的是像appRoutingModule.AddRoutes(myRoutes)这样的应用程序模块初始化我的路由。

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

是否可以在

导入时初始化路由器模块, 但后来通过方法调用?

不,这是不可能的。当 Angular 编译模块时,它会合并其中定义的所有提供程序。在避免与 Angular 中的模块的常见混淆中阅读更多内容。forRootRouterModule方法实际上定义了许多应用程序范围的提供程序,如LocationUrlSerializerRouterPreloader等。这些提供程序需要在模块启动之前进行编译。

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

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

最新更新