を購読しますhandleResponse(レスポンス)すべて正常に動作します。私が必要とするのは、現在の動作以外にresponseO.do(..)のチェックを行うためのすべてのリクエストです。Angular2は私がHTTP POSTメソッドをovverride HTTPクライアントを作成した二回
私もresponse.share()を試しました。このオブジェクトを購読することもできません。
私が探しているものを達成する方法はありますか?ありがとう。
を購読しますhandleResponse(レスポンス)すべて正常に動作します。私が必要とするのは、現在の動作以外にresponseO.do(..)のチェックを行うためのすべてのリクエストです。Angular2は私がHTTP POSTメソッドをovverride HTTPクライアントを作成した二回
私もresponse.share()を試しました。このオブジェクトを購読することもできません。
私が探しているものを達成する方法はありますか?ありがとう。
確かに、あなたはdo
インターセプターでObservableを購読していません。あなたが代わりにdo
を使用するのでは、観測可能なのストリームデータを操作したい場合、あなたはおそらくmap
を使用する必要があります
post(url, data):Observable<Response> {
let headers = new Headers();
this.createAuthorizationHeader(headers);
var response = this.http.post("\\services" + url, data, {
headers: headers
});
return this.handleResponse(response);
}
private handleResponse(responseO : Observable<Response>) {
return responseO.do(response => {
if (response.url.includes("LoginPage.html")) {
window.location.replace("../LoginPage.html");
}
});
}
:do
インターセプタで観察を返し 。これはストリームを操作するより反応的な方法です。
post(url, data):Observable<Response> {
let headers = new Headers();
this.createAuthorizationHeader(headers);
var response = this.http.post("\\services" + url, data, {
headers: headers
});
return response.map(res => handleResponse(res));
}
private handleResponse(responseO : Response) : Response {
if (response.url.includes("LoginPage.html")) {
window.location.replace("../LoginPage.html");
}
return responseO;
}
私はまた、アプリケーションを再起動することを意味し、リフレッシュするためにページを強制するために、角度2アプリでwindow.location.replace
を使用しないことをお勧めしたいと思います。角度ルータを使用してルートを変更すると、ナビゲートするときにアプリが読み込まれるのを待つ必要はありません。