首页 > 解决方案 > Angular 6:更改模板生成页面的 Content-Type

问题描述

注意:这个问题不是关于 ANGULAR 的 HttpClient,而是组件的模板生成的文档。

我想做一个简单但功能强大的 MS EXCEL 导出的老技巧:生成一个包含一个 <table> 的 HTML 文档,并使用“Content-Type: application/xls”提供它。用户的浏览器会将文档转发到本地安装的 MS EXCEL,它会检测到这不是“真正的”.xls,而是 HTML,并将 HTML 很好地转换为电子表格。

我的实现方法是直截了当的:为路径添加一个路由,比如“/export-xls”,以及一个获取数据并将其呈现在其模板中的新组件。

但是我绝对找不到在响应中设置“Content-Type”标头的方法!?我设想在“Routes”数组中我会设置“contentType:'application/xls'”,但没办法。

从 ANGULAR 中生成这样一个文档的最简单和最好的方法是什么?

标签: excelangulartemplatescontent-typexls

解决方案


您可以通过以下步骤解决您的问题

  1. 在本地文件系统中创建一个包含您的表的文件,并使用 URL.createObjectURL 方法为该文件创建一个 URL
  2. 向该文件发送 http 请求
  3. 拦截请求并将 contentType: 'application/xls' 添加到响应头
  4. 收到您的文件后,使用 URL.revokeObjectURL 方法撤销 URL 并从本地文件系统中删除该文件

我不确定您是否可以在不创建物理文件的情况下执行此操作,因为由于响应内容类型,您需要一个 http 请求


推荐阅读