Я рекомендую использовать оператор catch вместо do:
import { Injectable } from '@angular/core';
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpResponse, HttpHeaders, HttpErrorResponse} from '@angular/common/http';
import { Observable } from 'rxjs';
import {NgbModal} from '@ng-bootstrap/ng-bootstrap';
import { ErrormodalComponent } from '../../features/errormodal/errormodal.component';
import { UploadComponent } from '../../features/upload/upload.component';
@Injectable()
export class ErrorInterceptor implements HttpInterceptor {
constructor(private _ngbModal: NgbModal) {}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).catch((err : HttpErrorResponse) => {
switch(err.status) {
case 404:
// API not found
console.log('launch')
this._ngbModal.open(UploadComponent, {size: 'lg', backdrop: 'static' })
break
}
console.log('err', err);
return Observable.throw(err);
});
}
}
вам нужно добавить сервис ErrorInterceptor в раздел поставщиков модулей приложения, как это
providers :[
{ provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },
]