У меня есть http-перехватчик, который отлично работает в одном приложении Angular 6, но во втором приложении, которое было только что обновлено с 5 до 6, сборка приложения вызывает следующие ошибки
ERROR in src/app/loading.interceptor.ts(32,5): error TS2322: Type 'Observable<{} | HttpProgressEvent | HttpSentEvent | HttpHeaderResponse | HttpResponse<any> | Http...' is not assignable to type 'Observable<HttpEvent<any>>'.
Type '{} | HttpProgressEvent | HttpSentEvent | HttpHeaderResponse | HttpResponse<any> | HttpUserEvent<a...' is not assignable to type 'HttpEvent<any>'.
Type '{}' is not assignable to type 'HttpEvent<any>'.
Type '{}' is not assignable to type 'HttpUserEvent<any>'.
Property 'type' is missing in type '{}'.
src/app/loading.interceptor.ts(45,31): error TS2558: Expected 0 type arguments, but got 1.
Перехватчиквыглядит следующим образом
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import {
HttpRequest,
HttpHandler,
HttpEvent,
HttpInterceptor,
HttpResponse,
HttpErrorResponse
} from '@angular/common/http';
import { Observable } from 'rxjs';
import { of } from 'rxjs/observable/of';
import { LoaderService } from './loader.service';
import { tap } from 'rxjs/operators';
@Injectable()
export class LoadingInterceptor implements HttpInterceptor {
constructor(
private loadingService: LoaderService,
private router: Router
) {}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
this.loadingService.startLoading();
return next.handle(request).pipe(
tap(event => {
if (event instanceof HttpResponse) {
this.loadingService.stopLoading();
}
}, response => {
this.loadingService.stopLoading();
if (response instanceof HttpErrorResponse) {
this.router.navigateByUrl('/not-found');
}
return of<HttpEvent<any>>();
}));
}
}