我有一个需要加载提供程序的惰性加载模块,因此我正在使用forRoot
约定并返回以下代码:
@NgModule({
imports: [RouterModule.forChild([
{path: "", component: LazyComponent},
])],
declarations: [LazyComponent],
})
export class LazyModule {
static forRoot() {
return {
ngModule: LazyModule,
providers: [provider]
};
}
}
问题是当我在我的应用模块中调用forRoot时,延迟加载不再起作用。 (我在控制台中看不到单独的块)
@NgModule({
declarations: [
AppComponent,
HelloComponent
],
imports: [
BrowserModule,
AppRoutingModule,
LazyModule.forRoot() <======== this stops the lazy load module
],
bootstrap: [AppComponent]
})
export class AppModule {
}
从我学到的知识来看,它只能使提供者成为单例,为什么它不起作用?
最佳答案
截至目前,不可能在将延迟加载的模块中执行forRoot
(或此类的任何其他配置静态方法)。这里的问题是,当loadChildren需要ModuleWithProviders
时,这种方法将返回NgModuleFactory
。