Angular 4获取API excel

Angular 4获取API excel,angular,Angular,我连接了一个api调用,当hit下载一个excel文件时。如果我直接使用正确的参数访问URL,它会显示excel。我很难把它连接到前端来获取文件。我相信这是正确的服务呼叫,但我不确定在组件方面该怎么做 服务 getViolationFile(mid: string, cp: string, d: string, pl: string) { let params: URLSearchParams = new URLSearchParams(); params.set('mid',

我连接了一个api调用,当hit下载一个excel文件时。如果我直接使用正确的参数访问URL,它会显示excel。我很难把它连接到前端来获取文件。我相信这是正确的服务呼叫,但我不确定在组件方面该怎么做

服务

getViolationFile(mid: string, cp: string, d: string, pl: string) {
    let params: URLSearchParams = new URLSearchParams();
    params.set('mid', mid);
    params.set('cp', cp);
    params.set('d', d);
    params.set('pl', pl);

    let headers = new Headers({
      'Accept': 'application/json'
    });

    let options = new RequestOptions({
      headers: headers,
      search: params
    });

    return this.http.get('Violations/Download?', options)
  }

您在标题中设置了不正确的接受类型

记住类型。查看
get
的文档,并了解如何将其参数化,以监视正确的数据类型:

在您的情况下,这将是
observe?:“body”和
responseType:“blob”
,您需要从中从二进制文件重新创建excel文件

调用此函数(即调用
getViolationFile
)后,您是否确实订阅了它?Angular
http
返回cold observable,因此除非您不订阅它,否则实际上不会发生任何事情。它应该是这样的:

getViolationFile('a', 'b', 'c', 'd')
.subscribe((res) => {
  /* Here you have access to response data */
})

我认为这个问题缺少一些额外的细节。你有没有得到任何答案,或者网络没有任何问题?

ohhh这就更有意义了。需要将标题设置为什么?@AlexD-its
application/vnd.openxmlformats of cedocument.spreadsheetml.sheet
,但这并不是你的应用程序无法运行的主要原因。好吧,任何帮助都可以appreciated@AlexD,我的回答的其余部分仍然有效(即,您是否同意您的可观察到?)