Как остановить распространение ошибок в угловом перехватчике - PullRequest
0 голосов
/ 23 мая 2018

У меня есть http-перехватчик в моем приложении Angular:

@Injectable()
export class ResponseInterceptor implements HttpInterceptor {

  constructor(private messageService: MessageService) {}

  intercept( req: HttpRequest<any>, next: HttpHandler ): Observable<HttpEvent<any>> {
    return next
      .handle( req ).pipe(
        tap(event => {
          if (event instanceof HttpResponse) {
            Logger.log('Successful HTTP request in interceptor');
          }
        }, (error: any) => {
          const notFoundError = ErrorCodes.getErrorDescription(error.status);
          if (notFoundError) {
            this.messageService.show(errorMessage);
          } else {
            return Observable.throw( error );
          }

        }
      ));
  }
}

Когда есть notFoundError, мое приложение правильно показывает сообщение, которое я хочу, но кажется, что ошибка распространяется обратно в обработчик ошибок вслужбы, и я получаю «Ошибка ошибки: Uncaught (в обещании): HttpErrorResponse» в консоли.Есть ли способ остановить ошибки в перехватчике?

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

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Я делаю это с помощью rxjs 6:

import {EMPTY} from 'rxjs';

//in your try/catch, interceptor, if statement, etc. 
return EMPTY;

Из документации:

Создает Observable, который не отправляет никакие объекты в Observer и немедленно отправляет полное уведомление.

0 голосов
/ 23 мая 2018

Вы пытались вернуть пустое из Observable?

if (notFoundError) {
   return Observable.empty();
} else {
   return Observable.throw( error );
}
...