服务和控制器中的angular4错误处理
我有以下问题: 我在服务中有一个http post请求。 请求返回一个对象:服务和控制器中的angular4错误处理,angular,error-handling,Angular,Error Handling,我有以下问题: 我在服务中有一个http post请求。 请求返回一个对象: export interface IResponse<T> { Error:boolean ErrorMessage:string Data:T } 从控制器调用请求: this.personSearchService.searchPersons(personSearchObject).subscribe( result => {},
export interface IResponse<T> {
Error:boolean
ErrorMessage:string
Data:T
}
从控制器调用请求:
this.personSearchService.searchPersons(personSearchObject).subscribe(
result => {},
error => {
console.log("There was an error");
})
}
现在的问题是,控制器中的错误=>只有在php后端关闭时才会出现,而不是在我从服务抛出错误时
如何通知控制器请求的响应中存在错误
另一个问题是,我是否可以在控制器中忽略结果,而只捕获错误
谢谢,您肯定应该修复后端,以便它返回实际的错误响应。但无论如何,您的代码应该是:
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。如果您的后端不是返回状态为200 success的响应,而是返回一个指示实际上存在错误的主体,而是遵守HTTP标准并返回状态为500 internal error的实际错误响应,那么一切都会变得容易得多。你为什么不那样做呢?谢谢你。现在探索HTTPClient,这又提出了一系列问题,但将继续探索。
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));
}
});
}