2016-10-01 16 views
0

私はデフォルトの角度2のHTTPサービスを上書きするカスタムHTTPサービスを持っています。このサービスは、カスタムデフォルトオプションを設定し、要求開始時にローダーを設定し、要求完了時にローダーを非表示にします。角度2のhttpキャッチの観察可能な問題

サーバーから不正なエラー(401,403)が受信された場合に備えて、ユーザーをログインページにリダイレクトする機能も追加します。例えば、以下の私のHTTPメソッドは

get(url: string, options?: RequestOptionsArgs): Observable<any> { 
     this.setLoadingStatus(); 
     options = this.prepareOptions(options); 
     let that = this; 
     return super.get(url, options) 
      .map(res => { 
       this.clearLoadingStatus(); 
       return res.json(); 
      }) 
      .catch(function (err) { 
       //redirects user to login and display alert 
       that._gs.alertUnauthorized(); 
       return Observable.empty(); 
      }); 
    } 

である。しかし、ブラウザでのテスト、それはすなわち不正な要求の場合には401を返し保護されたページを要求するとき、それは、ログインページにリダイレクトしますが、コンソールが表示エラー以下doest:

GET http://localhost:49547/api/protected/ 401 (Unauthorized) 
EXCEPTION: Observable_1.Observable.empty is not a function 
ORIGINAL STACKTRACE: 
TypeError: Observable_1.Observable.empty is not a function 

誰でもガイドできますか? 。あなたがempty機能インポートする必要が

+0

は 'super.get()マップ((RES)=> {}、(ERR)=> {})を試してみてください;'構文を? –

答えて

2

import 'rxjs/add/observable/empty' 
+0

ありがとう、これは役に立ちました。この場合、Observable.empty()を使用するのが適切である場合、または他のより良いオプションがあるかどうかを教えてください。 –

+0

コンソールの "zone.js:1274 GET http:// localhost:49547/proteccted/401(Unauthorized)"のコンソールに次のエラー行が表示されます。それとも処理する必要がある例外ですか? –

+0

私はそれがちょうどデバッグ事だと思います。戻るObservable.empty()はエラーを抑制するので、もしそれがあなたが望むなら、あなたは金色です。 – j2L4e

関連する問題