Javascript 在angular2 Typescript应用程序中使用html2canvas时出错

Javascript 在angular2 Typescript应用程序中使用html2canvas时出错,javascript,angular,typescript,html2canvas,Javascript,Angular,Typescript,Html2canvas,我正在尝试在Angular2应用程序中实现打印功能。我偶然发现了这个html2canvas软件包。这看起来令人印象深刻,但当我试图在我的应用程序中包括这一点时,它给了我一个错误 以下是我遵循的步骤 从下载的js文件 添加了 在TS文件中声明声明var html2canvas:any 添加了要打印的代码(当用户单击打印按钮-测试代码时) printview():无效{ html2canvas(document.body).then(函数(canvas){ document.body.appendC

我正在尝试在Angular2应用程序中实现打印功能。我偶然发现了这个html2canvas软件包。这看起来令人印象深刻,但当我试图在我的应用程序中包括这一点时,它给了我一个错误

以下是我遵循的步骤

  • 从下载的js文件
  • 添加了
  • 在TS文件中声明
    声明var html2canvas:any
  • 添加了要打印的代码(当用户单击打印按钮-测试代码时)

    printview():无效{
    html2canvas(document.body).then(函数(canvas){
    document.body.appendChild(画布);
    });
    }

  • 但只要用户点击打印按钮,我就会得到以下错误

    浏览器\u适配器。ts:78引用错误:未定义html2canvas


    任何帮助或提示都是有用的

    TypeScript需要定义来识别VanillaJS框架

    这样想,TypeScript依靠它拥有的TS文件来识别对象,HTML中包含html2canvas,但TypeScript现在有了识别html2canvas对象的方法

    可能的解决办法:


    最佳

    升级到TypeScript 2.*并使用新的“typeRoots”和“types”字段

    升级到TS 2.0后,请执行以下步骤+

    npm i@types/html2canvas

    并更新“tsconfig.json”文件,如下所示:

    {
    “编译器选项”:{
    //你的选择,
    “类型根”:[
    “/node_modules/@types”
    ],
    “类型”:[
    “html2canvas”
    ]
    }
    }


    可接受

    手动下载定义文件(不推荐,因为您需要通过手动获取最新版本来维护每个更新的定义)


    又快又脏:

    在根文件夹中创建一个“references.d.ts”文件(位于tsconfig.json旁边),并编写以下内容:

    声明var html2canvas:any

    通过这样做,TCPSPER会知道你作为一个编码器知道“HTML2CANVAS”的存在,所以它不会认为它是一个错误(这个解决方案的主要缺点是你对库没有智力支持,所以基本上你只是在盲目地编写代码)。
    因此,对于一个可靠的项目,我推荐最佳解决方案,如果您只是想使用TS进行测试,其他任何解决方案都可以:)

    如果您想了解更多关于TS2中包含的新类型属性的信息,请阅读对另一个问题的回答:

    当然,请参阅以下文档:


    TypeScript需要定义才能识别VanillaJS框架

    这样想,TypeScript依靠它拥有的TS文件来识别对象,HTML中包含html2canvas,但TypeScript现在有了识别html2canvas对象的方法

    可能的解决办法:


    最佳

    升级到TypeScript 2.*并使用新的“typeRoots”和“types”字段

    升级到TS 2.0后,请执行以下步骤+

    npm i@types/html2canvas

    并更新“tsconfig.json”文件,如下所示:

    {
    “编译器选项”:{
    //你的选择,
    “类型根”:[
    “/node_modules/@types”
    ],
    “类型”:[
    “html2canvas”
    ]
    }
    }


    可接受

    手动下载定义文件(不推荐,因为您需要通过手动获取最新版本来维护每个更新的定义)


    又快又脏

    在根文件夹中创建一个“references.d.ts”文件(位于tsconfig.json旁边),并编写以下内容:

    声明var html2canvas:any

    通过这样做,TCPSPER会知道你作为一个编码器知道“HTML2CANVAS”的存在,所以它不会认为它是一个错误(这个解决方案的主要缺点是你对库没有智力支持,所以基本上你只是在盲目地编写代码)。
    因此,对于一个可靠的项目,我推荐最佳解决方案,如果您只是想使用TS进行测试,其他任何解决方案都可以:)

    如果您想了解更多关于TS2中包含的新类型属性的信息,请阅读对另一个问题的回答:

    当然,请参阅以下文档:


    您验证过html2canvas.js是否已实际加载吗?是的,我验证过。。。它一直在加载良好…您是否验证了html2canvas.js确实已加载?是的,我验证了。。。它加载得很好…在
    tsconfig,json
    文件中指定了“typeroot”,另外指定
    types
    元素不是一个错误吗?也就是说,仅仅指定
    typeroot
    ,难道还不够吗?谢谢你的回答。我再也进不了大学了。然后(…)。我得到以下错误:网页\导入\模块\ 7 \ html2canvas不是一个任何想法都会感激的功能!如果在
    tsconfig,json
    文件中指定了“typeroot”,那么额外指定
    types
    元素不是一个错误吗?也就是说,仅仅指定
    typeroot
    ,难道还不够吗?谢谢你的回答。我再也进不了大学了。然后(…)。我得到以下错误:网页\导入\模块\ 7 \ html2canvas不是一个任何想法都会感激的功能!