且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何动态覆盖 Angular2 可注入服务?

更新时间:2021-08-16 06:20:38

您可以像这样在引导程序中使用 useClass 覆盖 Angular2 Service 可注入服务:

You can overwritte an Angular2 Service injectible service with useClass in bootstrap like that :

    import {provide} from '@angular/core';

    const IS_ENV_DEV = true; //Put this constant in your config maybe

    bootstrap(App, [
      provide(RaceService, {useClass: IS_ENV_DEV ? MockHttpRequestService : HttpRequestService})
    ])

或者直接在使用您的 http 服务的组件中

Or directly in your Components which uses your http service

@Component({
   selector: 'my-comp',
   providers: [provide(HttpRequestService, {useClass: MockHttpRequestService})],
   template: `<strong>I use a mocked service</strong>`
})
export class MyComponent {

  constructor(private httpRequestService: HttpRequestService) {
    //Faker !
  }
}

我希望这个回复有帮助:)

I hope this response is helpful :)