import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpErrorResponse, } from '@angular/common/http'; import { Observable, throwError } from 'rxjs'; import { catchError, retry } from 'rxjs/operators'; import { NGXLogger } from 'ngx-logger'; import { Injectable } from '@angular/core'; import { Router } from '@angular/router'; @Injectable() export class HttpErrorInterceptor implements HttpInterceptor { constructor(private logger: NGXLogger, private router: Router) { } intercept(request: HttpRequest, next: HttpHandler): Observable> { return next.handle(request) .pipe( catchError((error: HttpErrorResponse) => { if ([401].indexOf(error.status) !== -1) { localStorage.removeItem('user'); if (this.router.url.startsWith('/home')) location.reload(true); else this.router.navigate(['home']); } this.logger.error([error, request]); return throwError(error); }) ) } }