首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular 2使用FileSaver.js的最佳方法

Angular 2使用FileSaver.js的最佳方法
EN

Stack Overflow用户
提问于 2016-10-25 21:04:42
回答 4查看 42.8K关注 0票数 22

我需要在我的Angular2应用程序中使用FileSaver.js (https://github.com/eligrey/FileSaver.js/)。

我知道我可以把它作为脚本文件添加到主html页面中,它将会工作。但是我想知道在Angular 2 (TypeScript)应用程序中最好的方法是什么,这样我就可以调用window.saveAs来保存文件。

EN

回答 4

Stack Overflow用户

发布于 2017-01-25 15:56:37

我设法让它使用这种方法(Angular-CLI):

代码语言:javascript
复制
npm install file-saver --save
npm install @types/file-saver --save

在组件中导入Filesaver之后:

代码语言:javascript
复制
import * as FileSaver from 'file-saver';

你可以这样使用它:

代码语言:javascript
复制
    let blob = new Blob([document.getElementById('exportDiv').innerHTML], {
            type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-16le"
        });
    FileSaver.saveAs(blob, "export.xls");    

如您所见,您不必在angular-cli.json中添加任何内容。只需安装库和它的类型,导入它,你就可以开始了。

票数 73
EN

Stack Overflow用户

发布于 2016-10-27 05:20:10

如果使用Angular-CLI构建项目,则可以通过运行以下命令来安装它

代码语言:javascript
复制
npm install file-saver --save

由于没有任何针对FileSaver的类型,我不得不这样做:

代码语言:javascript
复制
declare module "file-saver";

在我的typings.d.ts文件中。

然后,使用它:

代码语言:javascript
复制
// Import
import * as FileSaver from "file-saver";

//Implementation
FileSaver.saveAs(blob, filename);

作为参考,这些步骤取自Angular-Cli's steps for installing third-party libraries

编辑2017年9月27日:现在似乎有了FileSaver.js according to the README instructions的类型定义,所以不是

代码语言:javascript
复制
declare module "file-saver"

你只需要

代码语言:javascript
复制
npm install @types/file-saver --save-dev
票数 16
EN

Stack Overflow用户

发布于 2016-12-21 22:40:44

仅仅做npm install file-saver --save就是一个很好的开始。您还需要一个typescript声明文件(如file-saver.d.tstypings.d.ts),因为这个库是用纯javascript编写的。通常你可以通过执行npm install @types/file-saver来获得它,但是这个包现在已经过时了。

我已经为自己创建了一个文件-saver.d.ts-只需将其放在您的源目录中。

file-saver.d.ts

代码语言:javascript
复制
declare function saveAs(data: Blob, filename: string, noAutoBOM?: boolean): void;
declare module 'file-saver' {
    export = saveAs;
}

然后,您可以使用saveAs,如下所示:

your.ts

代码语言:javascript
复制
import saveAs = require('file-saver');
function save() {
    let blob = new Blob(['Hello world!'], { type: 'text/plain;charset=utf-8' });
    saveAs(blob, 'newcontrol.txt');
}

当然,不要忘记更新你的加载器的配置。

对于SystemJS,你需要类似这样的东西:

代码语言:javascript
复制
/**
 * System configuration for Angular samples
 * Adjust as necessary for your application needs.
 */
(function (global) {
  System.config({
    paths: {
      // paths serve as alias
      'npm:': 'node_modules/'
    },
    // map tells the System loader where to look for things
    map: {
      // our app is within the app folder
      app: 'app',

      // angular bundles
      '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
      '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
      '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
      '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
      '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
      '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
      '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
      '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',

      // other libraries
      'rxjs':                      'npm:rxjs',
      'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
      'file-saver':                'npm:file-saver'
    },
    // packages tells the System loader how to load when no filename and/or no extension
    packages: {
      app: {
        main: './main.js',
        defaultExtension: 'js'
      },
      rxjs: {
        defaultExtension: 'js'
      },
      'file-saver': {
        main: './FileSaver.js',
        defaultExtension: 'js'
      }
    }
  });
})(this);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40240796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档