Проблема, шаги следующие:
- У меня есть 2 или более конечных точек, одна из которых - метод GET, который возвращает ArrayBuffer в качестве ответа.
- Как только вызывается эта конечная точка 'GET', и после успеха, если я делаю какие-либо вызовы PUT / POST, внутри моей наблюдаемой подписки появляется тот же ArrayBuffer
- Однако из остальных конечных точек ответ корректен при проверке во вкладке сети браузера
Пробовал следующее:
HTML:
<div *ngFor="let link of files">
<span (click)="getDocument(link)">
{{ link?.fileName }}
</span>
</div>
<ngx-extended-pdf-viewer *ngIf="objectUrl"
[showDownloadButton]="true"
height="100%"
[src]="objectUrl"
[zoom]="'page-width'"
useBrowserLocale="false">
</ngx-extended-pdf-viewer>
<dx-button [width]='85' [height]='30' type="action" (onClick)='addDocument()'>
</dx-button>
.ts файл :
export class DownloadDocument implements OnInit {
ngOnInit(){}
getDocumentSubscription: Subscription;
objectUrl :string;
files : [{fileName:'sample'},{fileName:'TestDoc'}]
getDocument(params){
this.getDocumentSubscription = this.myService.getDocument(url,params,headers).subscribe((data:any)=>{
var blob = new Blob([data], {type: "octet/stream"});
this.objectUrl = URL.createObjectURL(blob); //sending this blob to ngx-extended-pdf-viewer as i knew thats a pdf
},(err) => {
if (err) {
console.log('error', err);
}
});
}
this.myService.addFiles(this.files).subscribe
((postCallResponse) =>{
//original response in network from service is { name:'kishore',id:1 }
/**
* postCallResponse contains ArrayBuffer which is from above GET call
*/
console.log("printing post call response",postCallResponse);
});
}
ngOnDestroy(){
if(this.getDocumentSubscription){
this.getDocumentSubscription().unsubscribe();
}
}
service.ts:
getDocument(url,params,headers):Observable<ArrayBuffer>{
headers.contentType='application/octet-stream';
headers.responseType='ArrayBuffer';
return this.http.get(url,{params, ...headers});
}
addFiles(data): Observable<any>{
return this.http.post<any>(url, data);
}
Ожидаемый результат:
Подписанные данные содержат соответствующие ответы на запросы API