【问题标题】:Angular / Ionic - Handle JSON "error" propertyAngular / Ionic - 处理 JSON“错误”属性
【发布时间】: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() 事件中这样做?

标签: json angular typescript ionic-framework ionic3


【解决方案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 {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 2020-11-30
    • 2021-08-09
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多