und*_*ned 3 javascript angular
我有一个需要公开提供程序的延迟加载模块,所以我使用了forRoot约定并返回以下代码:
@NgModule({
imports: [RouterModule.forChild([
{path: "", component: LazyComponent},
])],
declarations: [LazyComponent],
})
export class LazyModule {
static forRoot() {
return {
ngModule: LazyModule,
providers: [provider]
};
}
}
Run Code Online (Sandbox Code Playgroud)
问题是当我在我的应用程序模块中调用 forRoot 时,延迟加载不再起作用。(我在控制台中没有看到单独的块)
@NgModule({
declarations: [
AppComponent,
HelloComponent
],
imports: [
BrowserModule,
AppRoutingModule,
LazyModule.forRoot() <======== this stops the lazy load module
],
bootstrap: [AppComponent]
})
export class AppModule {
}
Run Code Online (Sandbox Code Playgroud)
据我所知,它应该只使提供者成为单例,为什么它不起作用?
截至目前,不可能forRoot在延迟加载的模块中执行(或任何其他此类配置静态方法)。这里的问题是这样的方法返回一个ModuleWithProviderswhile loadChildren 需要一个NgModuleFactory.
LazyModule当您在导入数组中导入 a 时,AppModule它不再是“懒惰”的了。惰性模块只能在专用的RoutingModule.
那么,如果我理解正确的话,您想在 LazyModule 之间共享服务吗?
如果是这样,请LazyModule从SharedModule 中删除AppModule 并创建一个 SharedModule,然后将您想要在 SharedModule 的数组中共享的服务移至providersSharedModule 中。在AppModulewith中导入 SharedModule,在 LazyModules 中forRoot导入SharedModulewithoutforRoot
| 归档时间: |
|
| 查看次数: |
2217 次 |
| 最近记录: |