我的一个Angular指令中有以下代码:
@HostListener('paste', ['$event'])
onPaste($event: ClipboardEvent) {
setTimeout(() => {
const input = (<HTMLInputElement>$event.target);
input.value = input.value.replace(/\D/g, '');
});
}
在IE11中失败并显示错误ClipboardEvent is undefined
。
幸运的是我可以输入它只是Event
,但我想知道为什么它会打破 -
我可以在angular-cli.json中添加任何lib以使其与ClipboardEvent
一起使用吗?
"lib": [
"es2017",
"dom"
],
“dom”是Event
来自......
答案 0 :(得分:0)
在IE中,角度JIT(即时编译)构建模式似乎是一个问题。它有助于使用AOT(提前)。这样一来,加载网站就不会出错。
ng build --aot
JIT使浏览器在运行时编译代码,而IE似乎无法正确编译(这是猜测!)。
这是AOT和JIT之间差异的解释:
https://angular.io/guide/aot-compiler
注意:
从剪贴板粘贴仍然无法在IE中运行。这里很好地解释了为什么它不能在所有地方都起作用:Clipboard Event(堆栈溢出)
答案 1 :(得分:0)
像这样使用
model
剪贴板事件仍处于实验技术之下。这将起作用。