mic*_*p78 1 javascript html2canvas typescript angular
我正在尝试在Angular2应用程序中实现打印功能。我碰到了这个包html2canvas。它看起来令人印象深刻,但是当我尝试将其包含在我的应用程序中时,会抛出一个错误。
这是我遵循的步骤
<script src="scripts/html2canvas.js"></script>declare var html2canvas: any;添加了要打印的代码(当用户单击“打印”按钮-测试代码时)
printview(): void {
html2canvas(document.body).then(function(canvas) {
document.body.appendChild(canvas);
});
}
但是,一旦用户单击打印按钮,我就会收到以下错误
browser_adapter.ts:78 ReferenceError: html2canvas is not defined
任何帮助或提示将是有用的...
小智 5
TypeScript需要定义才能识别VanillaJS框架。
这样想,TypeScript依靠它拥有的TS文件来识别对象,HTML2canvas包含在HTML中,但是TypeScript现在可以识别html2canvas对象。
可能的解决方案:
最佳:
升级到TypeScript 2. *,并使用新的“ typeRoots”和“ types”字段。
升级到TS 2.0+后,请执行以下步骤
npm i @types/html2canvas
然后像这样更新您的“ tsconfig.json”文件:
{
"compilerOptions": {
// your options,
"typeRoots": [
"./node_modules/@types"
],
"types": [
"html2canvas"
]
}
}
可接受的:
手动下载定义文件(不建议使用,因为您需要通过手动获取最新版本来维护每个更新的定义)。
快速又肮脏:
在您的根文件夹(tsconfig.json旁边)中创建一个'references.d.ts'文件,并编写以下内容:
declare var html2canvas: any;
这样,编译器将知道您作为编码器已经知道'html2canvas'的存在,因此不会将其视为错误(此“解决方案”的主要缺点是您不支持IntelliSense)库,因此基本上您只是盲目地编写代码。
因此,对于一个可靠的项目,我建议使用“ 最佳”解决方案,如果您只是出于测试目的而使用TS,其他任何解决方案都可以:)。
如果您想了解有关TS2中包含的新类型属性的更多信息,请阅读对另一个问题的回答:
当然请查阅文档:
https://www.typescriptlang.org/docs/handbook/compiler-options.html
| 归档时间: |
|
| 查看次数: |
4326 次 |
| 最近记录: |