是否可以在不使用 .forRoot() 导入的情况下使用 Angular RouterModule?

Is it possible to use Angular RouterModule without importing it with .forRoot()?

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

forRoot调用需要routes列表,示例中这样使用:

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

它迫使 AppRoutingModule 意识到 myRoutes。但它应该是相反的,我需要的是从 appRoutingModule.AddRoutes(myRoutes).

这样的应用程序模块初始化我的路由

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

Is it possible to initialize RouterModule not at the moment of import, but later by method call?

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

to make my AppRoutingModule unaware of actual application routes list.

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