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

如果Angular2 HTTP响应数据不符合类型,如何捕获错误,angular,typescript,interface,typescript-typings,angular-http,Angular,Typescript,Interface,Typescript Typings,Angular Http,如果我使用类型创建Angular2 HTTP请求,然后分配一个也具有特定类型的响应,如果服务器响应不是该类型,那么我可以捕获错误而不是中断应用程序并执行活动吗 。。。。接口 export interface loginUser { username: string; password: string; } export interface loginResData { username: string; details: string; } 。。。组件代码 u

如果我使用类型创建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);
    });
  }
如何捕获数据上发生的错误,而不是类型data:loginResData上发生的错误。首先可能吗?

在运行时忽略接口。您最好创建一个类,如

导出类登录数据{
用户名:字符串;
详细信息:字符串;
构造函数(数据:任意){
if(data&&data.username&&data.details){
this.username=data.username;
this.details=data.details;
}
抛出“登录数据无效或不完整”;
}
}
登录(用户){
this.\u httpprovider.httpReq(this.url,'POST',user,null)
.map(数据:any=>新数据(数据))
.订阅((数据:loginResData)=>{
this.loginEvent.emit(数据);
});
}

好的,太棒了。非常感谢。