Angular / Ionic - 处理 JSON“错误”属性

Posted

技术标签:

【中文标题】Angular / Ionic - 处理 JSON“错误”属性【英文标题】:Angular / Ionic - Handle JSON "error" property 【发布时间】:2018-04-29 04:53:24 【问题描述】:

我正在使用 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 存在,我会通过代码/消息错误通知用户。

【问题讨论】:

你现在有什么问题? 我试图找出代码中执行JSON解析的位置,并检查数据或错误字段是否存在,并最终在UI中通知处理后的数据或错误 为什么不能在(err) =&gt; console.log(err);buttonClicked() 事件中这样做? 【参考方案1】:

如果您需要以更通用的方式执行此操作,您可以使用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 

【讨论】:

以上是关于Angular / Ionic - 处理 JSON“错误”属性的主要内容,如果未能解决你的问题,请参考以下文章

Angular 6 - Ionic - 使用拦截器中断 http 请求并返回 json

(IONIC - Angular)我如何在 html 卡片中仅显示符合特定条件的 JSON 中的某些对象?

Json 输入 Ionic 3 和 Angular 6 意外结束

Foreach Json 结果 Ionic Angular

ionic 3 angular 5 restapi 请求不起作用

Ionic Angular Mobile App 在从项目中的文件中获取和显示 json-array 数据时显示错误---