2016-02-27 47 views
12

gelen hata mesajı alın ben Hizmetimde Aşağıdaki kodAçısal 2 http

myService.ts benim bileşen dosyasında

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); 
       } 
      ); 
    } 

Hata mesajını örn. Invailid url. Bunu açarsam

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

, şu hata mesajını bulamıyor: Ben hatayı yazdırırken , aşağıdaki gibi bir nesne (muhtemelen tepki nesne) olsun. Precies hata mesajlarını almanın daha iyi bir yolu var mı?

cevap

9

Hata, bu durumda bile yanıtın gövdesinde bulunur. Ben araştırdık

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

Edit

:

Sen yanıtına json yöntemi kullanarak erişebilirsiniz: hata olay işleyicisi onError işlevini bakın biraz daha bu konu. Aslında, tam mesaja sahip olamazsın. net::ERR_NAME_NOT_RESOLVED'u kastediyorum. XHR bunu sağlamaz. Bununla birlikte, XHR'nin status'un 0 olduğunu görebilirsiniz. Bu, istek gönderilirken sorun oluştuğuna dair bir ipucu olabilir (aslında gönderilmez). cevap için

+0

Teşekkür:

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

bu soruya bakın. Buna erişebilirim. Ancak örneğin Geçersiz bir URL’m olduğunda, yanıtın gövdesinde hata mesajı göremiyorum. Kullanıcı arayüzünde gösterilecek bir hata mesajı almak mümkün mü? – user3288346

+0

Rica ederim! Aslında, XHR nesnesinde erişilemediğinden tam olarak mesaja sahip olamazsınız. Yani, bu nesnenin 'statüsüne 'güvenebilirsiniz ... Cevabımı güncelledim. –