2016-07-25 28 views
0

私は角度2を使用しており、HTTPリクエストからのエラーをlogAndPassOnメソッドに渡しています。エラー "プロパティ 'ステータス'がタイプ 'エラー'に存在しません。 typeof Errorはオブジェクトですが、typeofのように見えますが、typeof Fileのようにエラーが認識されます。プロパティ 'status'がタイプ 'Error'に存在しません

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

エラーの種類を「任意」に設定することでこの問題を回避できましたが、より良い方法があるはずです。 typeofエラーをインポートするライブラリはありますか?私自身のErrorクラスを作成してインポートする以外に、これを処理する方法はありますか?

+1

Http observableで作業していて、これがあなたのエラーコールバックである場合、エラーコールバックに渡される実際の型は '@ angular/http'から' Response'、成功のコールバックで得たのと同じ応答で、「エラー」ではありません。 –

+0

私はHttp observableを使用していますが、これは私のエラーコールバックですが、エラーをレスポンスまたはレスポンスに変更すると、「名前 'Response'を見つけることができません」というメッセージが表示されます。 –

+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というプロパティがあります。

関連する問題