2016-07-25 43 views
0

我正在使用Angular 2並將HTTP請求中的錯誤傳入logAndPassOn方法。我收到錯誤「屬性'狀態'不存在類型'錯誤'。」類型的錯誤是對象,但它看起來像一個類型的錯誤將被識別爲類型的文件是。屬性「狀態」不存在類型'錯誤'

private logAndPassOn (error: Error) { 
    if (error.status == 403) { 
     Do things 
    } 
    return Observable.throw(error); 
    } 

我通過將錯誤的類型設置爲'any'來解決這個問題,但似乎應該有更好的方法。有沒有一個庫來導入typeof錯誤?除了編寫我自己的Error類並導入它之外,是否有辦法處理這個問題?

+1

不知道在哪裏使用這個方法,但如果你正在使用Http observable,這是你的錯誤回調,我認爲傳遞給錯誤回調的實際類型是來自'@ angular/http'的'Response',在成功回調中得到的迴應相同,而不是「錯誤」。 –

+0

我使用Http observable,這是我的錯誤回調,但如果我將錯誤更改爲響應或響應,我會收到「無法找到名稱」響應「。 –

+0

您需要從'@ angular/http'導入它 –

回答

2

傳遞給Http錯誤回調的對象實際上是@angular/http模塊中的Response類型。這與您從初始Http調用中獲得的Response是一樣的。如果出現錯誤響應,則將Response作爲錯誤發送給訂戶。

import { Response } from '@angular/json'; 

http.get(..) 
    .subscribe(
     (res: Response) => { doSomething(res.json()) } 
     (res: Response) => { ... }); 

所以基本上,你試圖使用Error是不正確的。它在您使用any時起作用,因爲在運行期間對象通過了實際的Response確實具有status屬性。

相關問題