2016-07-22 6 views
1

인증 서비스를 호출하는 로그인 서비스가 있으며 API 서버에서 되돌아 오는 오류를 트래핑해야합니다.각도 2 서비스에서 관찰 가능한 오류 처리

loginUser() { 
    console.log(this.localUser.email); 
    console.log(this.localUser.password); 

    this.loginService.loginUser(this.localUser) 
     .subscribe(
     token => { 
      console.log('token = ' + token) 
      this.token = token}, 
     error => { 
      this.errorMessage = <any>error 
      console.log("err msg = " + this.errorMessage); 
     }, 
     () => this.completeLogin()); 
} 

이 내 로그인 서비스 :

나는 현재 나의 login.component이이

loginUser(localUser: LocalUser) { 
    return this.authorizationService.loginUser(localUser); 
} 

이 내 인증 서비스로 :

loginUser(localUser: LocalUser): Observable<Token> { 
    var grantString: string = "grant_type=password&username="; 
    var passwordString : string = "&password=" 
    var email = localUser.email; 
    var password = localUser.password; 

    var headers = new Headers(); 
    headers.append('Content-Type', 'application/x-www-form-urlencoded'); 

    var creds:string = grantString + email + passwordString + password; 

    return this.http.post(this.url, creds, { headers: headers }) 
     .retry(2) 
     .timeout(20000, new Error('Timeout expired.')) 
     .delay(1000) 
     .map((response: Response) => <Token>response.json()) 
     .catch(this.handleError); 
} 

handleError(error: any) { 
    let errorMsg = error.message || 'Server error'; 
    console.error(errorMsg); 
    return Observable.throw(errorMsg); 
} 

문제 반환 된 오류 메시지는 서버 오류가 아니지만 다음과 같습니다. "err msg = TypeError : 개체가 속성 또는 메서드 'throw'를 지원하지 않습니다. "

실제 메시지를받는 방법에 대한 아이디어가 있습니까?

답변

3

대개 rxjs '가져 오기'정적 가져 오기가 없습니다.
rxjs 연산자와 통계를 하나씩 직접 가져 오는 경우 이런 일이 발생할 수 있습니다.

// 통계학
가져 오기 'rxjs/add/observable/throw'; 당신의 도움을 위해 내가 그렇게 바보가 된 기분
https://github.com/ReactiveX/rxjs/blob/master/src/Rx.ts

+0

... 감사 : 여기에 전체 목록 확인을 위해

. –

관련 문제