#angular #typescript
#angular #машинопись
Вопрос:
У меня есть asp.net базовый WebAPI и веб-приложение Angular9.
Я хочу получить ошибку в subscribe как объект, а не только как строку.
this.http.post<TestSystem>(this.url, testsystem).subscribe((result) => {
// do something
}, err => {
console.log(typeof err);
});
Th asp.net возвращает базовый бэкэнд
[HttpPost(template: "save")]
public ActionResult<TestSystemBean> Save(TestSystemModel model)
{
// Validate reportRequest
if (ModelState.IsValid == false)
{
return BadRequest("Invalid ModelState");
}
}
Но я получаю только строку «Неверный запрос», а не объект, чтобы получить сообщение «Недопустимое состояние модели».
Как я могу получить ошибку как объект?
В ErrorInterceptor в AngularApp я получаю полный HttpErrorResponse:
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).pipe(catchError(err => {
debugger;
if ([401, 403].includes(err.status) amp;amp; this.authenticationService.userValue) {
// auto logout if 401 or 403 response returned from api
this.authenticationService.logout();
}
const error = (err amp;amp; err.error amp;amp; err.error.message) || err.statusText;
return throwError(error);
}))
}
Комментарии:
1. Обновите полный код angular здесь.
2. каково значение err.error.message в вашем случае?
3. @jkonst это было не определено, но я решил это вчера
Ответ №1:
Я решил это. Строка
const error = (err amp;amp; err.error amp;amp; err.error.message) || err.statusText;
в ErrorInterceptor сделал какую-то магию, которую я не понимаю, но удалите эту строку, и я получу HttpErrorResponse, как я и хотел.