2016-12-05 16 views
0

私はhttpコールを試みていますが、エラーが発生した場合は私のことを行います。ここでhttpでキャッチエラーが発生する

は私のコードです:私はそれを呼び出すと

import { Injectable } from '@angular/core'; 

import { Http, Response } from '@angular/http'; 
import { Observable } from 'rxjs/Observable'; 

import 'rxjs/add/observable/throw'; 

// Operators 
import 'rxjs/add/operator/catch'; 
import 'rxjs/add/operator/debounceTime'; 
import 'rxjs/add/operator/distinctUntilChanged'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/switchMap'; 
import 'rxjs/add/operator/toPromise'; 

@Injectable() 
export class HttpCallService { 

    constructor(private http: Http) { } 

    getHeroes(): Observable<Hero[]> { 
     console.log('entered'); 
     return this.http.get('Url') 
      .map(this.extractData) 
      .catch(this.handleError); 
    } 
    private extractData(res: Response) { 
     console.log('extract entered'); 
     let body = res.json(); 
     return body.data || {}; 
    } 
    private handleError(error: Response | any) { 
     console.log('error entered'); 

     let errMsg: string; 
     if (error instanceof Response) { 
      const body = error.json() || ''; 
      const err = body.error || JSON.stringify(body); 
      errMsg = `${error.status} - ${error.statusText || ''} ${err}`; 
     } else { 
      errMsg = error.message ? error.message : error.toString(); 
     } 
     console.error(errMsg); 
     return Observable.throw(errMsg); 
    } 

} 

export class Hero { 
    constructor(
     public id: Date, 
     public author: string, 
     public text: string 
    ) { } 
} 

それだけgetHeroesにある入力されたコンソールにログインします。私は、私は有効なURLを持っていないが、それはキャッチに移動しないエラーがあることを知っている?

答えて

1

実際のHTTP呼び出しを行うには、subscribe()メソッドを呼び出す必要があります。あなたのメソッドgetHeroes()は誰かがそれを購読するときObservableを返すと宣言するだけです。そのため、getHeroes() - extractData()とhandleErrors()からのログだけが表示されます。

コードのどこかでgetHeroes()。subscribe()を実行する必要があります。

関連する問題