如何显示响应错误正文Angular 4

时间:2018-02-27 11:33:34

标签: angular typescript http webpack error-handling

如果用户输入错误数据,则错误为: If user type wrong data the error is:

我想要显示蓝色标记"错误"警惕。我试过这段代码:

    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);
 }

但我只获得对象Object。如何解决这个&#34;错误&#34;?我应该为错误创建新类吗?

问候,Bartek:)

5 个答案:

答案 0 :(得分:2)

您可以使用JSON.stringify()

将JSON对象转换为字符串
  

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

或者您可以将错误对象的值作为

  

alert(error._body.type)//将为您提供type = error

答案 1 :(得分:1)

您可以使用JSON.parse()方法

将字符串解析为对象
JSON.parse(error.json()._body).errors[0]

将单独提供错误消息。 (如果我没有弄错的话,请原谅我)

答案 2 :(得分:0)

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

方法1:

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

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

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

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

答案 3 :(得分:0)

尝试这一行代码

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

stringify:将json转换为字符串

答案 4 :(得分:0)

这对我有用

const errorObjectAsString = JSON.stringify(error);