2017-02-02 99 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