httpインターセプタに正しい方法でサブスクライブすることに問題があります。私は以下を持っています:エラーを傍受して
post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response>{
return super.post(url,body, {headers: customHeaders}).catch(err =>{
console.log('Error caught in POST at '+url);
return Observable.of(err);
});
}
これはうまくいきます - 投稿中にエラーが発生するたびにログを記録します。しかし、私はこのような他のコンポーネントでエラーをキャッチしようとした場合:
this.http.post('someurl','somestring')
.subscribe(
success=>{
console.log('success: ',success);
},
error=>{
console.log('error: ',error);
}
)
をだから今、POST中にエラーが私のコンソールログのプリントがある場合:しかし
Error caught in POST at someurl
success: //errorobject here//
、私はこれを期待していたが。
Error caught in POST at someurl
error: //errorobject here//
私は間違っていますか?それが成功によって処理されるように
post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response>{
return super.post(url,body, {headers: customHeaders}).catch(err =>{
console.log('Error caught in POST at '+url);
return Observable.throw(err); // <--------------
});
}
Observable.of
は、観察可能な「成功」を返します。
ティエリー、私はあなたのために1つ行ったhttp://stackoverflow.com/questions/37049848/http-stream-send-twice-instead-of-once :) – uksz