如何在angular 2中有条件地添加httpInterceptor

时间:2018-04-09 19:15:10

标签: angular

我想知道如何在角度2中有条件地添加httpInterceptor。在angularjs中,它是可能的。

  if (httpProvider && httpProvider.interceptors) {
                        httpProvider.interceptors.push('MyTestInterceptor');
                    }

我正在创建一个角度库,我想让用户自由使用我的httpInterceptor或使用他们自己的。

在MyLibrary

export class MyModule {

   static forRoot(config: MyConfig ): ModuleWithProviders {
    return {
      ngModule: MyModule,
      providers: [
          {provide: MY_CONFIG, useValue: config} ,  MyService ,
      { provide: HTTP_INTERCEPTORS, useClass: MyInterceptor, multi: true }
      ]
    }
  }    
}

用户申请

@NgModule({
  declarations: [
    AppComponent, HomeComponent ,ContactComponent,ProductComponent,ErrorComponent,ProductDetailComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    RouterModule.forRoot(appRoutes),

    MyModule.forRoot({
      //some config data
    })

  ],
  providers: [ProductService],
  bootstrap: [AppComponent]
})
export class AppModule { }

0 个答案:

没有答案