2
私はAngular2を使ってwebappを構築しています。Angular2:すべてのHTTPリクエストを購読する
Angular2がHTTPリクエストを行うたびに関数を実行できますか?
これは、JWTトークンをリフレッシュする必要があるかどうかをチェックするために使用されます。
ありがとうございます!あなたがコンポーネントまたは他のサービスが購読することができ、それはイベントに要求が
@Injectable()
class NotifyingHttp extends Http {
requestSent:Subject = new Subject();
requestCompleted:Subject = new Subject();
constructor(_backend: ConnectionBackend, _defaultOptions: RequestOptions) {
super(_backend, _defaultOptions);
}
get(url: string, options?: RequestOptionsArgs) : Observable<Response> {
this.requestSent.next(url);
return super.get(newUrl, options)
.finally(response => this.requestCompleted.next(url));
}
post(...)
...
}
各メソッドは、これをオーバーライドする必要が行われるたびに放出することを、観察を提供するカスタムHttp
クラスを使用することができます
も参照してください。 Httpの拡張カスタムクラスコンストラクタ([これに関連する](http://stackoverflow.com/a/40295956/2587435))ではなく、HttpコンストラクタがAngularによって呼び出されるようになります。だから、あなたは工場を使い、あなた自身で作成する必要があります。 ConnectionBackendはインターフェイス(そのトークンのプロバイダなし)なので、ファクトリにはXHRBackendを使用する必要があります。 –
これは、プロバイダ{{provide:ConnectionBackend:useClass XhrBackend}}を追加しなければならなかった理由を説明するかもしれませんが、それは(私が最近作成したプランカのテストに従って) –