如何检测角度2中的http状态代码

时间:2016-03-01 05:46:19

标签: angular httpresponse

我的angular2项目中有一个loadSize()函数,它在我的服务中调用getTotalNumberCampaigns()并返回一个observable。并且我订阅了这个observable以获得结果。

这是我的loadSize()

   loadSize() {
    this.campaignsService.getTotalNumberCampaigns().subscribe(value => {//async call
        this.campaignSize = value;
    }, (err)=> {}

    );
}

假设我的getTotalNumberCampaigns()出错,它会在订阅中触发err => {}。我的问题是我如何知道httpreponse状态代码是什么以便我可以指示用户采取不同的操作(如果连接失败(502),用户应该刷新。如果是access_token到期(500),页面应该跳转到登录页面)

这是我在服务类

中的getTotalNumberCampaigns
 getTotalNumberCampaigns(): Observable<number> {
    return this.http.get(`${this.apiUrl}/Count`, { headers: this.headers })
        .map<number>(res => <number>res.json())
}

why i get 200

2 个答案:

答案 0 :(得分:6)

返回的错误对应于响应本身,因此您可以使用其status属性来获取状态代码:

loadSize() {
    this.campaignsService.getTotalNumberCampaigns().subscribe(value => {//async call
        this.campaignSize = value;
    }, (err: any) => { console.log(err.status); console.log(err);}

    );
}

答案 1 :(得分:0)

在你的loadSize方法

loadSize() {
    this.campaignsService.getTotalNumberCampaigns().subscribe(value => {//async call
        this.campaignSize = value;
    }, (err)=> {}

    );
}

你应该通过

获得响应代码
value.status