如何正确处理Angular 4.0.0的错误响应

时间:2017-08-25 10:25:30

标签: angular angular-http

我在处理Angular 4中的错误时遇到了问题。请告诉我正确的方法。当服务器响应错误时,我想将其重定向到缓存块,当状态为403时,我想要有一个特定的行为。当我检查第一个map()中的状态并从那里抛出一个错误 - catch执行块,但错误作为带有堆栈跟踪的字符串传递。它无法再次识别catch块中的状态。怎么做正确的方法?

getLoggedInUser(): Observable<User> {
  return this.http.get(this.baseApiUrl + `api/user/me`)
    .map((res: Response) => {
      if(res.status < 200 || res.status >= 300) {
        console.log(res.status);
        throw new Error();
      } 
      else {
        return res.json();
      }
    })
    .map((user) => {
      let deserializedUser = new User().deserialize(user)
      this._loggedInUser = deserializedUser;
      return deserializedUser;
    })
    .catch((errorStatus: any) => { 
      console.log(errorStatus.status);
      if (errorStatus === "403") {
        console.log(errorStatus);
        this.isRequestForbidden = true;
      }
      return Observable.throw(errorStatus || 'Server error') 
    });
}

0 个答案:

没有答案