2017-02-02 61 views
2

我试图做一个http请求,然后返回响应对象或布尔值。不知道哪一个是重要的。但我无法捕捉到错误。我有一个handleError函数,但它并不真正的工作。如何在http请求中获取状态码Angular2

我的代码现在看起来像这样。

服务

updateProduct(product: Product): Promise<number> { 
     return this.http.put('/api/products/1' + product.id,product) 
      .toPromise() 
      .then(response => response.status) 
      .catch(this.handleError); 
    } 

    private handleError(error: any): Promise<any> { 
     //console.error('An error occurred', error); // for demo purposes only 
     return Promise.reject(error.message || error); 
    } 

保存功能

onSave(): void { 
    this.productService.updateProduct(this.product) 
     .then(() => this.goBack()) 
     .catch(er => console.log(er)); 
} 

我怎样才能得到这个工作?

+0

所以你得到'4xx'状态码作为回应? –

+0

你是什么意思“不真正的工作。”请记住,您可以使用相同的处理程序来获得成功和失败。您只需根据您获得的响应(成功或失败)发送不同的信息。在该处理程序中,您可以根据该信息设置您想要的任何内容。所以,如果处理程序得到“错误”,请返回此处,否则返回。 –

回答

3

我看,如果你想与该操作时存在

return Promise.reject(error.message || error);

返回整个error对象,而不是仅仅message你返回返回Error.message。

return Promise.reject(error);

+1

非常感谢! – apero