我使用的是TypeScript,Angular 5.0。我的后端响应总结如下:
export interface JSONResponse {
error?: {
code: number,
message: string
};
data?: {};
}
我的服务中从服务器获取数据的功能是:
httpGet(url: string, httpParams: HttpParams) {
return new Promise((resolve, reject) => {
this.http.get<LoginResponse>(url, {params: httpParams})
.subscribe(res => {
resolve(res.data);
}, err => {
// handle http get related errors here
console.log(err);
});
});
}
然后是使用此服务来呈现模板的组件:
buttonClicked(event) {
this.myService.httpGet('myAPIurl', someRequestParams)
.then((data) => {
this.myData = data;
}, (err) => {
console.log(err);
});
}
哪里可以处理来自后端的响应的错误检查?
也就是说,如果属性data
存在,则响应是成功的,并对我的数据进行适当的处理;如果属性error
存在,我会用代码/消息错误通知用户。
如果需要以更通用的方式执行,可以使用IonicErrorHandler。
IonicErrorHandler拦截默认控制台错误处理并在使用Ionic的Dev Build时将运行时错误显示为覆盖服务器
import { NgModule, ErrorHandler } from '@angular/core';
import { IonicErrorHandler } from 'ionic-angular';
@NgModule({
providers: [{ provide: ErrorHandler, useClass: IonicErrorHandler }]
})
class AppModule {}
如果你想定制它,你也可以这样做。
class MyErrorHandler implements ErrorHandler {
handleError(err: any): void {
// do something with the error
}
}
@NgModule({
providers: [{ provide: ErrorHandler, useClass: MyErrorHandler }]
})
class AppModule {}