События HTTP

Для получения исчерпывающих данных о процессе выполнения запроса, при его инициировании необходимо задать для параметра reportProgress значение true.

Установление reportProgress в true инициирует возникновение событий HttpEvent в процессе выполнения запроса. Тип события хранится в свойстве type, значением которого является одно из значений перечисления HttpTypeEvent.

    import {Injectable} from '@angular/core';
    import {HttpClient, HttpRequest, HttpEvent, HttpEventType} from '@angular/common/http';
 
    @Injectable({providedIn: 'root'})
    export class ContactsService {
      constructor(private http: HttpClient){}
 
      getContactsDictionary() {
        const req = new HttpRequest('GET', '/api/contacts/dictionary', {
          reportProgress: true,
          responseType: 'blob'
        });
 
        this.http.request(req).subscribe((event: HttpEvent<any>) => {
          switch (event.type) {
            case HttpEventType.Sent:
              console.log('Sent');
              break;
            case HttpEventType.DownloadProgress:
              console.log(`Downloading: ${event.loaded / 1024}Kb`);
              break;
            case HttpEventType.Response:
              console.log('Finished', event.body);
              break;
          }
        });
      }
    }

Запросы такого рода реализуются через метод request() сервиса HttpClient. Метод принимает объект класса HttpRequest.