如果Angular2 HTTP响应数据不符合类型,如何捕获错误

时间:2017-02-03 14:05:31

标签: angular typescript interface typescript-typings angular-http

如果我使用类型创建Angular2 HTTP请求,那么也分配一个具有特定类型的响应,如果服务器响应不属于该类型,那么我可以捕获错误而不是破坏应用程序并执行活动吗?

....接口.....

export interface loginUser {
    username: string;
    password: string;
}

export interface loginResData {
    username: string;
    details: string;
}

......组件代码.....

user: loginUser
 constructor(private _httpprovider: Httpprovider, private _router: Router) {

   }

  login(user) {
    this._httpprovider.httpReq(this.url, 'POST', user, null).subscribe((data: loginResData) => {
      this.loginEvent.emit(data);
    });
  }

如何捕获不在类型数据上的数据发生的错误:loginResData。首先有可能吗?

1 个答案:

答案 0 :(得分:2)

在运行时忽略接口。你最好创建一个像

这样的类
   export class loginResData {
     username: string;
     details: string;
     constructor(data:any) {
       if(data && data.username && data.details) {
         this.username = data.username;
         this.details = data.details;
       }
       throw 'loginResData is invalid or incomplete';
     }
   }
  login(user) {
    this._httpprovider.httpReq(this.url, 'POST', user, null)
    .map(data:any => new oginResData(data))
    .subscribe((data: loginResData) => {
      this.loginEvent.emit(data);
    });
  }