1. ホーム
  2. http

[解決済み] http.request()で発生した例外を正しくキャッチするには?

2022-05-08 07:57:34

質問

私のコードの一部です。

import {Injectable} from 'angular2/core';
import {Http, Headers, Request, Response} from 'angular2/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';

@Injectable()
export class myClass {

  constructor(protected http: Http) {}

  public myMethod() {
    let request = new Request({
      method: "GET",
      url: "http://my_url"
    });

    return this.http.request(request)
      .map(res => res.json())
      .catch(this.handleError); // Trouble line. 
                                // Without this line code works perfectly.
  }

  public handleError(error: Response) {
    console.error(error);
    return Observable.throw(error.json().error || 'Server error');
  }

}

myMethod() を実行すると、ブラウザのコンソールに例外が表示されます。

ORIGINAL EXCEPTION: TypeError: this.http.request(...).map(...).catch is not a function.

解決方法は?

インポートにこれを追加してみてはいかがでしょうか。

import 'rxjs/add/operator/catch';

することもできます。

return this.http.request(request)
  .map(res => res.json())
  .subscribe(
    data => console.log(data),
    err => console.log(err),
    () => console.log('yay')
  );


コメントにつきまして

<ブロッククオート

EXCEPTION: TypeError: Observable_1.Observable.throw は関数ではありません。

同様に、そのために、使用することができます。

import 'rxjs/add/observable/throw';