gpt4 book ai didi

angular - 服务和 Controller 中的angular4错误处理

转载 作者:行者123 更新时间:2023-12-03 08:24:10 24 4
gpt4 key购买 nike

我有以下问题:

我在服务中有一个http发布请求。
该请求返回一个对象:

export interface IResponse<T> {
Error:boolean
ErrorMessage:string
Data:T
}

如果在php或mysql中生成错误,则将 bool(boolean) 值设置为true并显示一条消息。
来自服务的请求:
searchPersons(personSearchObject:PersonSearchObject){
//generate request here
return this.http.post(Config.ServerUrl, "data="+ request, options)
.map( (responseData) => {
this.personResponse = responseData.json()
if (!this.personResponse.Error){
this.persons.next(this.personResponse.Data)
return;
} else {
console.log(this.personResponse.ErrorMessage)
return Observable.throw(new Error(this.personResponse.ErrorMessage))
}
})
}

从 Controller 调用该请求:
 this.personSearchService.searchPersons(personSearchObject).subscribe(
result => {},
error => {
console.log("There was an error");
})
}

现在的问题是,仅当例如PHP后端关闭时,才在 Controller 中命中error =>,而不是在我从服务中抛出错误时。

如何通知 Controller 请求响应中存在错误?

另一个问题是我可以简单地将结果留在 Controller 中,而仅捕获错误吗?

谢谢,

最佳答案

您绝对应该修复您的后端,以便它返回实际的错误响应。但是无论如何,您的代码应该是:

searchPersons(personSearchObject:PersonSearchObject) {
return this.http.post(Config.ServerUrl, "data="+ request, options)
.switchMap(response => {
const personResponse = response.json()
if (!personResponse.Error) {
return Observable.of(personResponse.Data);
}
else {
return Observable.throw(new Error(personResponse.ErrorMessage));
}
});
}

请注意,不建议使用Http服务。您应该切换到HttpClient。

关于angular - 服务和 Controller 中的angular4错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47090851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com