如何在Angular2 2.0.0 RC.5中设置全局提供程序?

时间:2016-08-12 08:58:52

标签: angular

在使用NgModule的新功能时,如何设置全局提供程序?在过去,我可以这样做:

bootstrap(AppComponent, [
   GlobalServiceAAA,
   GLOBAL_PROVIDERS_BBB
]);

使用NgModule我们以他的方式引导应用程序:

platformBrowserDynamic().bootstrapModule(AppModule);

在这种情况下,我放置了我的全局服务和提供者(假设我不想在每个组件中提供它们)?

2 个答案:

答案 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
    };
  }
}