我需要在Angular2应用程序中使用FileSaver.js(https://github.com/eligrey/FileSaver.js/).
我知道我可以在主html页面中将其添加为脚本文件,它将起作用.但是我想知道在Angular 2(TypeScript)应用程序中最好的方法是什么,这样我就可以调用window.saveAs来保存文件.
我正在努力将角度1.x站点移动到我使用angular-cli 1.0.0-beta.15创建站点的新角度2.0站点.
我有一个按钮可以将一些数据导出到CSV文件.当页面首次加载时,我收到一条错误消息"无法找到模块'文件保护程序'",但是当我点击按钮时,一切都运行正常.
我安装了FileSaver.js组件:
的package.json
...
"dependencies": {
...
"@types/filesaver": "0.0.30",
"file-saver": "^1.3.2"
...
}
...
Run Code Online (Sandbox Code Playgroud)
在我的export.service.ts中:
import { saveAs } from 'file-saver';
...
let file = new Blob(['hello world'], { type: 'text/csv;charset=utf-8' });
saveAs(file, 'helloworld.csv');
...
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决此错误?
我已经检查了所有可以找到使用Filesaver JS with angular的帖子,但我仍然无法绕过一个灵魂.我将其添加到system.config.js的map部分
'filesaver': 'node_modules/filesaver/src/Filesaver.js'
Run Code Online (Sandbox Code Playgroud)
我将它添加到system.config.js的packages部分
'filesaver': {defaultExtension: 'js'}
Run Code Online (Sandbox Code Playgroud)
然后我以这种方式将其导入我的service.ts.
import { saveAs } from 'filesaver';
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误.
有人可以帮忙吗?
我正在使用带有角度2的FileSaver.js并且它工作得非常好; 但是,我的构建中出现语义错误:
错误TS2304:找不到名称'saveAs'
我正在使用angular 2 seed并将库添加到我的project.config中,如下所示:
this.NPM_DEPENDENCIES = [
...this.NPM_DEPENDENCIES,
{src: 'file-saver/FileSaver.min.js', inject: true},
];
this.SYSTEM_CONFIG_DEV.paths['file-saver'] =
`${this.APP_BASE}node_modules/file-saver/FileSaver`;
this.SYSTEM_BUILDER_CONFIG.packages['file-saver'] = {
main: 'FileSaver.js',
defaultExtension : 'js'
};
Run Code Online (Sandbox Code Playgroud)
我可以在我的组件中使用saveAs:
downloadFile(data: any){
var blob = new Blob([data], { type: 'text/csv' });
//saveAs is a function in the FileSaver.js library https://github.com/eligrey/FileSaver.js
saveAs(blob, "results.csv");
}
Run Code Online (Sandbox Code Playgroud)
问题是语义错误导致我的构建在推送到我的云环境时失败.
我尝试通过以下方式添加输入:
npm i @types/file-saver
Run Code Online (Sandbox Code Playgroud)
这允许我导入:
import { saveAs } from 'file-saver';
Run Code Online (Sandbox Code Playgroud)
但是,这给了我错误:
h.saveAs不是一个函数