从Angular 2 http获取错误消息

前端之家收集整理的这篇文章主要介绍了从Angular 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);
                }
            );
    }

我想打印错误信息,以防万一Invailid网址.
当我打印错误时,我得到一个对象(可能是响应对象),如下所示:

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

如果我打开它,我找不到错误信息.是否有更好的方法获取precies错误消息?

即使在这种情况下,错误也包含在响应正文中.请参阅错误事件处理程序onError函数

> https://github.com/angular/angular/blob/master/modules/@angular/http/src/backends/xhr_backend.ts#L96

您可以使用响应中的json方法访问它:

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

编辑

我对此问题进行了更多调查.事实上,你无法得到确切的信息.我的意思是net :: ERR_NAME_NOT_RESOLVED. XHR不提供它.也就是说,您可以看到XHR的状态为0.这可能暗示发送请求时请求有问题(实际上并未发送).

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

看到这个问题:

> XMLHttpRequest() & net::ERR_NAME_NOT_RESOLVED

猜你在找的Angularjs相关文章