Angular 无法在post请求5中设置responseType,正在尝试从post api捕获文件响应

Angular 无法在post请求5中设置responseType,正在尝试从post api捕获文件响应,angular,http,post,http-post,angular5,Angular,Http,Post,Http Post,Angular5,我试图将responseType设置为arraybuffer,但它给出了错误。api正在返回一个文件,我需要捕获该文件并生成该文件 我调用exportCartDetails,如下所示,它是在OnAddEvent emitter on Mat对话框上触发的 const data1 = this.dialogRef.componentInstance.onAdd.subscribe(result => { this.exportCartDetails(result)

我试图将responseType设置为arraybuffer,但它给出了错误。api正在返回一个文件,我需要捕获该文件并生成该文件

我调用exportCartDetails,如下所示,它是在OnAddEvent emitter on Mat对话框上触发的

const data1 = this.dialogRef.componentInstance.onAdd.subscribe(result => {
      this.exportCartDetails(result)
        .subscribe(
          mydata=>{
            console.log('data is all here');
            var file =new Blob([mydata],{type: 'application/vnd.ms-excel' });
            var fileURL=URL.createObjectURL(file);
            let a =document.createElement("a");
            a.style.display = "none";
            a.href=fileURL;
            a.target="_blank";
            a.download="CartData.xls";
            a.click();
            a.remove();
         }
      )
        ,
    err=>{
    alert("Error in calling api");
    console.log(err);
  };
出口购物车详情如下

  exportCartDetails(report_data: ReferenceDataApi): Observable<ArrayBuffer> {
    const headers=new HttpHeaders().set('Content-Type', '*' );    
    //header.set( 'Content-Disposition': 'attachment; filename=' + req.body.filename,);
    const response = new HttpResponse();
    console.log(this.report_data);
    return this.http.post<ArrayBuffer>(url,this.report_data,{headers,responseType:'arraybuffer'})
    .pipe(
      catchError(this.handleError<ArrayBuffer>('exportCartDetails'))
    );    
}

作为一种解决方法,您可以从
httpClient.post()
中删除预期的返回类型


如果从
this.http.post(url,this.report\u data,{headers,responseType:'ArrayBuffer'})中删除返回类型
ArrayBuffer
,或者通过添加
observe:body
参数显式地像
this.http.post(url,this.report\u data,{headers,observed:'body',responseType:'ArrayBuffer'})来删除返回类型,是否有效
@AmitChigadani是的,错误已经消失,但现在无法下载文件。非常感谢您的评论。非常感谢你。在你第一次发表评论之后,我做了一些修改,效果很好。我被困了两天。非常感谢。
ERROR in src/app/cart-detail/cart-detail.component.ts(118,91): error TS2345: Argument of type '{ headers: HttpHeaders; responseType: ArrayBuffer; }' is not assignable to parameter of type '{ headers?: HttpHeaders | { [header: string]: string | string[]; }; observe?: "body"; params?: Ht...'.
  Types of property 'responseType' are incompatible.
    Type 'ArrayBuffer' is not assignable to type '"json"'.
src/app/cart-detail/cart-detail.component.ts(118,113): error TS2352: Type 'string' cannot be converted to type 'ArrayBuffer'.
return this.http.post(url,this.report_data,{headers,responseType:'arraybuffer'})
    .pipe(
      catchError(this.handleError<ArrayBuffer>('exportCartDetails'))
    ); 
return this.http.post<ArrayBuffer>(url,this.report_data,{headers,responseType:'arraybuffer' as 'arraybuffer'})
        .pipe(
          catchError(this.handleError<ArrayBuffer>('exportCartDetails'))
   );