如果 Angular2 HTTP 响应数据不符合类型,我如何捕获错误
Posted
技术标签:
【中文标题】如果 Angular2 HTTP 响应数据不符合类型,我如何捕获错误【英文标题】:How do I capture error if Angular2 HTTP response data does not adhere to type 【发布时间】:2017-06-20 22:25:28 【问题描述】:如果我使用类型创建 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】:接口在运行时被忽略。你最好创建一个类似的类
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);
);
【讨论】:
好的,太棒了。谢谢。以上是关于如果 Angular2 HTTP 响应数据不符合类型,我如何捕获错误的主要内容,如果未能解决你的问题,请参考以下文章
Angular2 http observables - 如何使用未定义的类型