在使用NgModule的新功能时,如何设置全局提供程序?在过去,我可以这样做:
bootstrap(AppComponent,[ GlobalServiceAAA,GLOBAL_PROVIDERS_BBB ]);
使用NgModule我们以他的方式引导应用程序:
platformBrowserDynamic().bootstrapModule(AppModule);
在这种情况下,我放置我的全局服务和提供者(假设我不想在每个组件中提供它们)?
解决方法
有两种方法可以做到这一点.
注意:共享功能模块可能包含您的公共服务.
@NgModule({ (...) providers: [ // <------- GlobalServiceAAA,GLOBAL_PROVIDERS_BBB ] }) export class AppModule { }
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 }; } }