В этом случае, поскольку вы используете &&
, a
всегда будет оцениваться первым, потому что результат используется для определения того, следует ли коротко замыкать выражение.
Если a
возвращает false, тогда b
вообще не разрешается оценивать.
Чтобы получить приложение / поток октетов, вы должны установить arraybuffer
в качестве типа ответа в Angular HttpHeaders
.
Это метод обслуживания:
fetchOutput(): Observable<ArrayBuffer> {
let headers = new HttpHeaders();
const options: {
headers?: HttpHeaders;
observe?: 'body';
params?: HttpParams;
reportProgress?: boolean;
responseType: 'arraybuffer';
withCredentials?: boolean;
} = {
responseType: 'arraybuffer'
};
return this.httpClient
.get('https://your-service-url.com/api/v1/your-resource', options)
.pipe(
map((file: ArrayBuffer) => {
return file;
})
);
}
Это вызов метода обслуживания и функции saveAs
:
this.yourService
.fetchOutput()
.subscribe((data: any) => {
const blob = new Blob([data], { type: 'application/octet-stream' });
const fileName = 'Your File Name.csv';
saveAs(blob, fileName);
})
Поскольку другие пользователи предлагают: 401 Несанкционированный - это обычно ошибка на стороне клиента из-за отсутствия учетных данных.