在使用NgModule的新功能时,如何设置全局提供程序?在过去,我可以这样做:
bootstrap(AppComponent, [
GlobalServiceAAA,
GLOBAL_PROVIDERS_BBB
]);
使用NgModule我们以他的方式引导应用程序:
platformBrowserDynamic().bootstrapModule(AppModule);
在这种情况下,我放置了我的全局服务和提供者(假设我不想在每个组件中提供它们)?
答案 0 :(得分:4)
您需要在NgModule的providers
属性中指定它们。
@NgModule({
(...)
providers: [ // <-------
GlobalServiceAAA, GLOBAL_PROVIDERS_BBB
]
})
export class AppModule { }
答案 1 :(得分:3)
有两种方法可以做到。
注意:共享功能模块可能包含您的常用服务。
<强> 1。没有shared feature module
@NgModule({
(...)
providers: [ // <-------
GlobalServiceAAA, GLOBAL_PROVIDERS_BBB
]
})
export class AppModule { }
<强> 2。使用shared feature module
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import {SharedModule} from './shared/shared.module'; //<-------- Important
...
...
@NgModule({
imports: [ BrowserModule,
SharedModule.forRoot(), //<----------Important
HomeModule,
routing
],
declarations: [ AppComponent],
bootstrap: [ AppComponent ]
})
export class AppModule { }
<强> shared.module.ts 强>
import { NgModule, ModuleWithProviders } from '@angular/core';
import { CommonModule } from '@angular/common';
import { GlobalServiceAAA} from './path' //<-------- important
import { GLOBAL_PROVIDERS_BBB} from './path'; //<-------- important
@NgModule({
imports: [ CommonModule ],
declarations: [],
exports: [ CommonModule ]
})
export class SharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedModule,
providers: [ GlobalServiceAAA,GLOBAL_PROVIDERS_BBB] //<------important
};
}
}