首页 > 解决方案 > 如何在Angular中仅打印错误消息

问题描述

我正在尝试找到一种仅从我的 api 调用错误中打印“消息”部分的方法,但不确定如何仅获取该部分,因此如果我能得到任何建议或帮助,我将不胜感激。

所以这就是当 api 调用出现错误时它在网络选项卡中显示的内容(图片)

 saveChartClick(err: any) {
    // update the chart data here
    if(!this.isTextChart && !this.isFigure && !this.isGrid){
      this.chartService.updateChart(this.chart).pipe(takeUntil(this.death$)).subscribe((updated) => {
        if(updated) {
          this.chart = updated;
          this.snackbar.open("Chart has been updated.", " ", {duration: 2500});
          this.store.dispatch(updateChart({chart: this.chart}));
        } else {

          this.snackbar.open(err.message, "close ", { duration: 2500 });
        }
      }, err => {
        this.snackbar.open(err.message, "close ", { duration: 2500 });
      })
    }
    else{
      // save the new data here
      this.store.dispatch(saveChartData({ guid: this.chart.guid, data: this.chartData }));
    }
  }

现在它向我显示了这个,这不是我想要显示的,因为它并不能真正说明错误是什么。

错误消息它现在显示给我(图片)

这是硬编码的,但这是我想要显示的一个示例(图片)

错误在后端处理,有时我会收到不同的错误消息,所以我不想硬编码。

标签: htmlangularapitypeserror-handling

解决方案


在 Angular 的HttpErrorResponse对象中,这就是message属性的样子。你想要的不是

this.snackbar.open(err.message, "close ", { duration: 2500 });

this.snackbar.open(err.error.message, "close ", { duration: 2500 });

或者,为了安全起见(error可以为空),

const errorMessage = err.error ? err.error.message : err.message;
this.snackbar.open(errorMessage, "close ", { duration: 2500 });

推荐阅读