2016-02-27 20 views
12

からエラーメッセージを取得し、私持っている私のサービスで、次のコード角度2のhttp

myService.ts私のコンポーネントファイルで

makeHttpGetRequest(url){ 

     return Observable.interval(config.SUPERVISOR_REFRESH_INTERVAL * 1000) 
      .switchMap(() => this.http.get(url)) 
      .map(res => res.json()) 
      .timeout(config.REQUEST_TIMEOUT * 1000, new Error('Time out occurred')) 

    } 

myComponent.ts

ngOnInit(){ 
     this._myService.makeHttpGetRequest(myurl) 
      .subscribe(
       data => { 
        this.supervisorServers = data; 
        } 

       }, 
       error => { 
        this.error = true; 
        console.log(error); //gives an object at this point 
        this.showError(error); 
       } 
      ); 
    } 

例えば次のような場合にエラーメッセージを出力したい。有名なURL。 私はエラーを印刷するとき、私は次のようにオブジェクト(おそらく応答オブジェクト)を取得:

Object { _body: error, status: 200, statusText: "Ok", headers: Object, type: 3, url: null } 

私はこれを開くと、私はエラーメッセージを見つけることができません。 preciesエラーメッセージを取得するより良い方法はありますか?

答えて

9

この場合でもエラーは応答本体に含まれています。私が調べた

error => { 
    this.error = true; 
    console.log(error.json()); //gives the object object 
    this.showError(error.json()); 
} 

編集

あなたは応答にJSONメソッドを使用してアクセスすることができます:エラーイベントハンドラのonError機能を参照してください。もう少しこの問題。実際、あなたは正確なメッセージを持つことはできません。私はnet::ERR_NAME_NOT_RESOLVEDを意味します。 XHRはそれを提供しません。つまり、XHRのstatus0であることがわかります。これは、要求を送信するときに要求が問題であったというヒントになる可能性があります(実際には送信されません)。

error => { 
    (...) 
    var err = error.json(); 
    var status = err.currentTarget.status; 
    (...) 
} 

この質問を参照してください:返信用

+0

感謝を。私はそれにアクセスすることができます。しかし、例えば。無効なURLがあると、応答の本文にエラーメッセージが表示されません。 UIに表示するエラーメッセージを取得することは可能ですか? – user3288346

+0

あなたは大歓迎です!実際、XHRオブジェクト内ではアクセスできないため、正確なメッセージを持つことはできません。つまり、あなたはこのオブジェクトの 'status'フィールドに依存することができます...私は私の答えを更新しました。 –