ответ трассировки ошибки на HttpInterceptor - PullRequest
0 голосов
/ 30 марта 2020

В моем приложении angular 6 я получаю сообщение об ошибке от API, ниже приведен код.

intercept(req: HttpRequest<any>, next: HttpHandler):Observable<HttpEvent<any>>{
 return next.handle(req)
 .pipe(
  catchError((error: HttpErrorResponse)=>{
   // const err="error occured"; 
   // console.log(error);
   // console.log(error.error.['@errors'].code);
   // console.log(`error log`, error.error.code)
    if (error.error['@errors'].code != 'ERR_UNITLIMIT') {
    this.MyService.errorHasOccurred(err);}
    return throwError(error);
   })
 );
 }

Я получаю ответ от службы ниже, как показано ниже

{"@errors":[{"code":"ERR_UNITLIMIT","message":"total cart value must not be exceed 500$.","details":[]}],"@warnings":[]}

Я пытаюсь проверить, содержит ли код объекта ответа ERR_UNITLIMIT или нет. Я пробовал вещи, которые были прокомментированы в коде выше, используя // , но всегда получая ошибку кода не определено.

1 Ответ

1 голос
/ 30 марта 2020

Поскольку "@errors" - это массив объектов, вы должны ссылаться на него, используя индекс 0. console.log(error.error['@errors'][0].code) сделает работу.

измените свою функцию, как показано ниже

intercept(req: HttpRequest<any>, next: HttpHandler):Observable<HttpEvent<any>>{
 return next.handle(req)
 .pipe(
  catchError((error: HttpErrorResponse)=>{
    if (error.error['@errors'][0].code != 'ERR_UNITLIMIT') {
    this.MyService.errorHasOccurred(error);}
    return throwError(error);
   })
 );
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...