【问题标题】:How to Show Response Error body Angular 4如何显示响应错误正文Angular 4
【发布时间】:2018-08-07 01:01:48
【问题描述】:

如果用户输入错误的数据,错误是:

我想在警报中显示蓝色标记的“错误”。我试过这段代码:

    create(doctor: Doctor): Promise<Response | Doctor> {
    return this.http
    .post(this.doctorsUrl, JSON.stringify(doctor), {headers: this.headers})
    .toPromise()
    .then(() => doctor)
    .catch(this.handleError);
  }

  private handleError(error: Response): Promise<Response>{
    console.error('An error occurred', error);
    alert(error.json());
    return Promise.reject(error);
 }

但我只得到对象对象。如何得到这个“错误”?我应该为错误创建新类吗?

你好,巴特克 :)

【问题讨论】:

  • 你试过JSON.parse(error.json()._body).errors[0] 吗?

标签: angular typescript http webpack error-handling


【解决方案1】:

您可以使用 JSON.stringify() 将 JSON 对象转换为字符串

警报(JSON.stringify(error.json()));

或者你可以从错误对象中获取值

alert(error._body.type) // 会给你 type=error

【讨论】:

  • 感谢对我的帮助很大,我得到了完整的回应,这是向前迈出的一大步!但是当 error._body 显示属性 _body 在类型响应中不存在时...
  • 尝试控制台错误并检查它打印的内容,从中您可以构建适当的警报消息。
【解决方案2】:

您可以使用JSON.parse() 方法将字符串解析为对象,

JSON.parse(error.json()._body).errors[0]

会单独给你错误信息。 (如果我没记错,请见谅)

【讨论】:

  • 这很有帮助。但我不需要这里的_body :) 解决了。
【解决方案3】:

有两种方法可以处理错误或显示错误消息。

方法一:

let message= JSON.parse(error._body).errors;

您可以直接在前端显示消息,但这仅适用于单个错误情况。

方法二:当错误是对象形式时

let message = "";
errorMessage='';
for (let prop in JSON.parse(error._body).errors) {message +=JSON.parse(error._body).errors[prop][0] + "\n"; this.errorMessage = message;
                } 

【讨论】:

    【解决方案4】:

    试试这行代码

    let obj :ValidationError = JSON.parse(JSON.stringify(error.error));
    

    stringify : 将 json 转换为字符串字符串

    【讨论】:

      【解决方案5】:

      这对我有用

      const errorObjectAsString = JSON.stringify(error);
      

      【讨论】:

        猜你喜欢
        • 2018-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        相关资源
        最近更新 更多