Jak dodać wiele niezależnych przechwytywaczy HTTP do aplikacji Angular 4?
Próbowałem je dodać, rozszerzając providers
tablicę o więcej niż jeden przechwytywacz. Ale tylko ostatnia jest faktycznie wykonywana, Interceptor1
jest ignorowana.
@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 {}
Mógłbym oczywiście połączyć je w jedną Interceptor
klasę i to powinno działać. Chciałbym jednak tego uniknąć, ponieważ te przechwytywacze mają zupełnie inne cele (jeden do obsługi błędów, drugi do wyświetlania wskaźnika ładowania).
Jak więc mogę dodać wiele przechwytywaczy?
Http
. Używana jest tylko ostatnia zmiana. Interceptor1 nie jest ignorowany, po prostu nie istnieje. Możesz użyć HttpClient, który zawiera przechwytywacze.