我有一个需要加载提供程序的惰性加载模块,因此我正在使用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

10-06 03:23