Я использую версию Angular 5.2 в своем проекте и сталкиваюсь с проблемой с изменением значения по умолчанию responseType для blob с новой функцией.
Теперь я хочу изменить responseType на blob, чтобы загрузить файл excel, но он не работает для меня.
В моем проекте я создал класс-оболочку как CustomHttpClient для выполнения вызовов Get или Post.
Класс CustomHttpClient выглядит так: -
export interface IRequestOptions {
headers?: HttpHeaders;
observe?: 'body';
params?: HttpParams;
reportProgress?: boolean;
responseType?: 'json';
withCredentials?: boolean;
body?: any;
}
/*Custom HttpClient Class for making the WebAPI calls.*/
export class CustomHttpClient {
_defaultHeaderType = new HttpHeaders({ 'Content-Type': 'application/json' });
// Extending the HttpClient through the Angular DI.
public constructor(public _http: HttpClient) {
}
public Get<T>(endPoint: string, options?: IRequestOptions): Observable<T> {
if (options == undefined) {
options = <IRequestOptions>{};
options.headers = this._defaultHeaderType
}
options.headers = this.injectClient(options.headers);
return this._http.get<T>(endPoint, options);
}
public GetBlob<T>(endPoint: string, options?: IRequestOptions): Observable<T> {
if (options == undefined) {
options = <IRequestOptions>{};
options.headers = this._defaultHeaderType
}
//This line is giving error
options.responseType = 'blob';
options.headers = this.injectClient(options.headers);
return this._http.get<T>(endPoint, options);
}
}
Теперь я хочу вызвать функцию GetBlob и изменить тип отклика на «blob». Но это показывает мне, что ошибка "Тип" blob "не может быть назначена типу" Json "".
Из класса обслуживания компонента я вызываю fn следующим образом: -
downloadTemplate(): Observable<any> {
let opt = {
headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Accept': 'application/xlsx'}),
options: new RequestOptions({ responseType: ResponseContentType.Blob })
}
return this._httpObj.GetBlob(this._baseUrl + 'DownloadTemplate', opt);
}