Angular HTTP ReportProgress где-то застрял и подписаться не получится

Сервис для запросов:

import {Injectable} from '@angular/core';
import {HttpClient} from "@angular/common/http";
import {Observable} from "rxjs/Rx";

@Injectable({
    providedIn: 'root'
})
export class HttpService {
    constructor(public http: HttpClient) {
    }

    uploadFile(formData: FormData): Observable<any> {
        return this.http.post('/upload', formData, {
            reportProgress: true
        });
    }
}

HTTP перехватчик:

import {Injectable} from "@angular/core";
import {HttpEvent, HttpHandler, HttpInterceptor, HttpParams, HttpRequest, HttpResponse} from "@angular/common/http";
import {Observable} from "rxjs";
import {tap} from "rxjs/operators";

@Injectable()
export class ConverterInterceptor implements HttpInterceptor {
    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        if(req.body !== null && !(req.body instanceof HttpParams) && !(req.body instanceof FormData)) {
            req = req.clone({
                body: decodeURI(req.body)
            });
        }

        return next.handle(req).pipe(tap((event: HttpEvent<any>) => {
            console.log('Test', event);
            if (event instanceof HttpResponse) {
                event = event.clone({body: encodeURI(event.body)});
            }
            return event;
        }));
    }
}

Как я это использую:

async uploadFile(files: FileList) {
    const formData: FormData = new FormData();
    for (let x = 0; x < files.length; x++) {
        const file = files.item(x);
        formData.append(x.toString(), file, file.name);
    }

    this.httpService.uploadFile(formData).subscribe(a => {
        console.log('A', a);
    }, b => {
        console.log('B', b);
    }, () => {
        console.log('C');
    });
}

Проблема: когда я загружаю файл с моей функцией, я получаю только один A ответ с сообщением. Но нет события, которое содержит ход загрузки.

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

Что я делаю неправильно?

Заранее спасибо за некоторые идеи.:-)

StackBlitz: https://stackblitz.com/edit/angular-ultbzm

Проблема в консоли после выбора файла.

Там видно, что у меня много Test события, но только один B событие, которое является HttpErrorResponse,

0 ответов