複数の独立したHTTPインターセプタをAngular 4アプリケーションに追加するにはどうすればよいですか?Angularアプリケーションに複数のHTTPインターセプタを追加する
providers
の配列を複数のインターセプタで拡張して追加しようとしました。しかし最後のものだけが実際に実行されますが、Interceptor1
は無視されます。
@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 {}
私は明らかにそれらを単一のInterceptor
クラスに結合することができ、それはうまくいくはずです。しかし、私はこれらのインターセプタが全く異なる目的を持っているので(エラー処理のためのもの、ローディングインジケータの表示のためのもの)、これを避けたいと思います。
どのように複数のインターセプタを追加できますか?
あなたは 'Http'をオーバーライドしています。最後のオーバーライドのみが使用されます。インターセプタ1は無視されず、存在しません。インターセプタが含まれているHttpClientを使用できます。 – estus
@estus「インターセプタが含まれているHttpClientを使用できますか?」とはどういう意味ですか? – str
https://angular.io/guide/http – estus