Como adicionar vários interceptores HTTP independentes a um aplicativo Angular 4?
Tentei adicioná-los estendendo a providers
matriz com mais de um interceptador. Mas apenas o último é realmente executado, Interceptor1
é ignorado.
@NgModule({
declarations: [ /* ... */ ],
imports: [ /* ... */ HttpModule ],
providers: [
{
provide: Http,
useFactory: (xhrBackend: XHRBackend, requestOptions: RequestOptions) =>
new Interceptor1(xhrBackend, requestOptions),
deps: [XHRBackend, RequestOptions],
},
{
provide: Http,
useFactory: (xhrBackend: XHRBackend, requestOptions: RequestOptions) =>
new Interceptor2(xhrBackend, requestOptions),
deps: [XHRBackend, RequestOptions]
},
],
bootstrap: [AppComponent]
})
export class AppModule {}
Obviamente, eu poderia combiná-los em uma única Interceptor
classe e isso deve funcionar. No entanto, eu gostaria de evitar isso, já que esses interceptores têm finalidades completamente diferentes (uma para tratamento de erros, outra para mostrar um indicador de carregamento).
Então, como posso adicionar vários interceptores?
Http
. Apenas a última substituição é usada. O Interceptor1 não é ignorado, ele simplesmente não existe. Você pode usar o HttpClient que possui interceptores incluídos.