web-dev-qa-db-ja.com

httpエラー応答をマップします

成功した応答だけでなくエラーもマッピングする方法はありますか?

サブスクライブ機能で変更されたエラーを取得したい

request.subscribe(
    response => {
        this.user = response;
    },
    error => {
        this.error = error;
    }
);

私はすでにこれを試しました

let request = this.http.put(url, JSON.stringify(user))
.map(
    response => response.json(),
    error => this.handleError(error) // returns a string
);

しかし、handleErrorは実行されません。

前もって感謝します。

12
gerric

エラー応答の結果をマップするには、catch演算子を使用する必要があります。

let request = this.http.put(url, JSON.stringify(user)).map(
            response => response.json())
          .catch(
            error => this.handleError(error)
        );

マップ演算子で指定されたコールバックは、正常な応答に対してのみ呼び出されます。

エラーを「マッピング」したい場合は、次のようなものを使用できます。

this.http.get(...)
       .map(...)
       .catch(res => Observable.throw(res.json())

この場合、マップされたエラーは、subscribeメソッドの2番目のパラメーターで定義されたコールバックに提供されます。

15