Поскольку вы передаете обратно блок данных, а не JSON, но не позволяете httpclient знать, как его анализировать, angular пытается проанализировать ответ как JSON, который является путем по умолчанию.
Вот документация с англоязычного сайта:
request(first: string | HttpRequest<any>, url?: string, options: {
body?: any;
headers?: HttpHeaders | {
[header: string]: string | string[];
};
observe?: HttpObserve;
params?: HttpParams | {
[param: string]: string | string[];
};
reportProgress?: boolean;
responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
withCredentials?: boolean;
} = {}): Observable<any>
responseType:
В дополнение к настройке параметров запроса, таких как исходящие заголовки и / или тело, хэш опций задает два ключевых элемента информации о запросе: responseType и что наблюдать.
Значение responseType определяет, как будет проанализировано успешное тело ответа. Если responseType является json по умолчанию, интерфейс типа для результирующего объекта может быть передан в качестве параметра типа в request ().
Так что в вашем случае попробуйте:
protected get<T>(url: string, params: any, defaultResult: T): Observable<any> {
return this.httpClient.get(url, {
headers: myHeader,
params: params,
responseType: 'blob'
})
.pipe(catchError(this.handleError(defaultResult))
);
больше информации:
HttpClient
Документация
Аналогичный вопрос
Угловой HttpClient "Http-сбой при разборе"