html2canvas回调Onrendered在Angular 2中不起作用

pra*_*een 3 html2canvas angular

在Angular 2项目中,我安装了版本号为0.5.0beta的html2canvas模块.

然后在我的TS文件中,我将其导入为:

import html2canvas from 'html2canvas';
Run Code Online (Sandbox Code Playgroud)

然后在我写的pdfDownload方法中,

html2canvas (document.getElementById('exportthis'), {
                        onrendered : function (canvas) { 
Run Code Online (Sandbox Code Playgroud)

在此之后,当我执行npm start命令时,我得到了错误,

onrendered不是html2canvasOptions中定义的属性.

任何人都可以帮我解决这个问题吗?这是我第一次使用angular 2和html2canvas.

Max*_*viy 7

Probaby你使用html2canvas 0.5版本.onrendered用于0.4及更早版本.html2canvas 0.5被重写为使用Promises.你必须改变

html2canvas (document.getElementById('exportthis'), { onrendered : function (canvas) {

html2canvas(document.getElementById('exportthis')).then(function (canvas) {
Run Code Online (Sandbox Code Playgroud)


sap*_*pan 3

我遇到了类似的问题。

我能够通过在html2canvas函数调用之外声明选项对象来解决这个问题。就像是。这会阻止 TS 编译器检查传递的选项对象的内部结构。

var obj = {
  onrendered: function (canvas) {
    var imgData = canvas.toDataURL("image/png");
  }
};
  html2canvas(document.getElementById("exportthis"), obj);
Run Code Online (Sandbox Code Playgroud)

编辑
将 typescript 升级到 2.4.0 后,如果出现以下错误

TS2559: Type '{ onrendered: (canvas: any) => void; }' has no properties in common with type 'Html2CanvasOptions'.
Run Code Online (Sandbox Code Playgroud)

然后添加任何 Html2CanvasOptions 属性,例如logging: false

obj = {
  onrendered: function (canvas) {
    var imgData = canvas.toDataURL("image/png");
  },
  logging: false
};
  html2canvas(document.getElementById("exportthis"), obj);
Run Code Online (Sandbox Code Playgroud)