如果我使用类型创建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。首先有可能吗?
答案 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);
});
}