Ответ 1
При использовании функции observe:response
не набирайте вызов (post<Blob>(...)
), так как возвращаемый Observable будет HttpResponse. Поэтому это должно работать:
this.httpclient.post('MyBackendUrl',
params,
{observe: 'response', responseType: 'blob'}
);
Почему это происходит, есть две версии метода post, один с общим типом, один без:
/**
* Construct a POST request which interprets the body as JSON and returns the full event stream.
*
* @return an 'Observable' of all 'HttpEvent for the request, with a body type of 'T'.
*/
post<T>(url: string, body: any | null, options: {
headers?: HttpHeaders | {
[header: string]: string | string[];
};
observe: 'events';
params?: HttpParams | {
[param: string]: string | string[];
};
reportProgress?: boolean;
responseType?: 'json';
withCredentials?: boolean;
}): Observable<HttpEvent<T>>;
/**
* Construct a POST request which interprets the body as an 'ArrayBuffer' and returns the full response.
*
* @return an 'Observable' of the 'HttpResponse' for the request, with a body type of 'ArrayBuffer'.
*/
post(url: string, body: any | null, options: {
headers?: HttpHeaders | {
[header: string]: string | string[];
};
observe: 'response';
params?: HttpParams | {
[param: string]: string | string[];
};
reportProgress?: boolean;
responseType: 'arraybuffer';
withCredentials?: boolean;
}): Observable<HttpResponse<ArrayBuffer>>;