2016-10-01 8 views
0

기본 각도 2 HTTP 서비스를 무시하는 사용자 지정 http 서비스가 있습니다. 이 서비스는 사용자 정의 기본 옵션을 설정하고 요청 시작시 로더를 설정하고 요청 완료시 로더를 숨 깁니다.각도 2 http catch 관찰 가능 문제

서버에서 승인되지 않은 오류 (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(); 
      }); 
    } 

그러나 브라우저 IE에서 테스트가 인증되지 않은 요청의 경우 401을 반환 보호 된 페이지에 대한 요청을 할 때, 그것은 오류가 아래의 로그인 페이지하지만 콘솔 디스플레이로 리디렉션 도다이다

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 

아무도 안내 할 수 있습니까?

+0

는'super.get()지도 ((고해상도) => {}, (ERR) =>를 {}) 시도,'구문을.? –

답변

2
당신은 empty 기능을 가져와야

:

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

감사합니다. 도움이되었습니다. 이 경우 Observable.empty()를 사용하는 것이 적절하거나 다른 더 좋은 옵션이 있다면 안내하십시오. –

+0

콘솔의 "zone.js : 1274 GET http : // localhost : 49547/proteccted/401 (Unauthorized)"콘솔에 아래 오류 줄이 계속 표시됩니다. 괜찮습니까? 아니면 처리해야하는 예외입니까? –

+0

그냥 디버깅 일 뿐이라고 생각합니다. 돌아 오는 Observable.empty()는 오류를 억제하므로 원하는 경우 황금이됩니다. – j2L4e