我正在尝试捕获由Angular中的Web API引发的错误,在某些情况下,我将不会显示用户友好的错误消息。给定下面的响应正文,我将如何访问字符串“必须附加PE和所有者签名才能获得提交状态”?
{
"data": {
"model.WorkflowStepId": [
"PE and Owner Signature must be attached for a status of Submitted"
]
},
"exceptionType": "FieldValidation"
}
到目前为止,这是我所拥有的,但是由于当前仅显示字符串“ model.WorkflowSetId”,所以我陷入了困境。
this.spinner = this.certService.updateCert(this.damId, this.certId, this.model)
.subscribe(response => {
...
},
(errorRes: HttpErrorResponse) => {
if (errorRes.error && errorRes.error.exceptionType === 'FieldValidation') {
const errors = errorRes.error.data;
for(let error in errors)
this.notificationService.error(error);
} else {
console.log(errorRes);
this.notificationService.error('An unknown error has occured. Please try again.');
}
});
答案 0 :(得分:2)
您可以简单地这样做:
if (errorRes.error && errorRes.error.exceptionType === 'FieldValidation') {
this.notificationService.error(errorRes.error.data.model.WorkflowStepId[0]);
}
答案 1 :(得分:0)
因此,事实证明“ model.WorkflowStepId”实际上是一个字符串。为了捕获它和其他类型的验证错误,我能够遍历错误的请求,构建一个将相同类型的字段验证错误分组为单个消息的字符串,然后使用烤面包机向用户显示这些消息。
if (errorRes.error && errorRes.error.exceptionType === 'FieldValidation') {
for (var key in errorRes.error.data) {
for (var i = 0; i < errorRes.error.data[key].length; i++) {
errorStr += (errorRes.error.data[key][i]);
errorStr += ". ";
}
this.notificationService.error(errorStr);
}
}