如何通过 SharedModule 将服务加载为延迟加载的 ngModule 中的单例?
如何在延迟加载的 ngModule 中将服务加载为单例?
我确实有一个提供 i18n 和 API 等服务的 SharedModule。这些服务是自己的 ngModules,它们提供自己的 forRoot 功能。现在我想使用 forRoot 在一个花边加载的模块中从 SharedModule 加载服务,这样就不会通过依赖注入创建新实例。
我尝试了以下类似的方法,但似乎没有任何效果
shared.module.ts
import {I18nModule} from "./i18n/i18n.module";
import {ApiModule} from "./api/api.module";
@NgModule({
exports: [
I18nModule,
ApiModule
]
}
export class SharedModule {
static forRoot():ModuleWithProviders {{
return {
ngModule: SharedModule,
providers: [ ... I18nModule.forRoot().providers, ... ApiModule.forRoot().providers ]
};
}
}
app.module.ts
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
routing,
SharedModule.forRoot(),
],
providers: [
],
bootstrap: [AppComponent]
})
export class AppModule {
}
进入模块和 forRoot / for child 的好资源是http://blog.angular-university.io/angular2-ngmodule/