Httpサービスを使用するためのAngular 2ドキュメントページに、例があります。
getHeroes (): Observable<Stuff[]> {
return this.http.get(this.url)
.map(this.extractData)
.catch(this.handleError);
}
私は angular2-webpack-starter プロジェクトを複製し、上記のコードを自分で追加しました。
を使ってObservable
をインポートしました
import {Observable} from 'rxjs/Observable';
私はプロパティObservable
もインポートされていると仮定します(.map
は動作します)。 rxjs.beta-6の変更履歴を確認しましたが、catch
については何も言及されていません。
はい、あなたはオペレータをインポートする必要があります:
import 'rxjs/add/operator/catch';
またはObservable
を次のようにインポートします。
import {Observable} from 'rxjs/Rx';
しかし、この場合は、すべての演算子をインポートします。
詳細についてはこの質問を参照してください。
RxJS 5.5以降では、catch
演算子は廃止予定です。 catchError
演算子をpipe
と組み合わせて使用してください。
RxJS v5.5.2がAngular 5のデフォルトの依存関係バージョンです。
catchError
を含む、インポートしたRxJS演算子ごとに、 'rxjs/operator'からインポートしてパイプ演算子を使用する必要があります。
import { Observable } from 'rxjs';
import { catchError } from 'rxjs/operators';
...
export class ExampleClass {
constructor(private http: HttpClient) {
this.http.request(method, url, options).pipe(
catchError((err: HttpErrorResponse) => {
...
}
)
}
...
}
ここで、catch
はcatchError
に置き換えられ、pipe
演算子はドットチェインで使用されているのと同じ方法で演算子を構成するために使用されます。
詳細については、 pipable (以前は lettable として知られていた)演算子に関するrxjsのドキュメントを参照してください。