在IE11中未定义ClipboardEvent

时间:2018-02-08 11:05:09

标签: angular events internet-explorer-11

我的一个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来自......

2 个答案:

答案 0 :(得分:0)

在IE中,角度JIT(即时编译)构建模式似乎是一个问题。它有助于使用AOT(提前)。这样一来,加载网站就不会出错。

ng build --aot

JIT使浏览器在运行时编译代码,而IE似乎无法正确编译(这是猜测!)。
这是AOT和JIT之间差异的解释: https://angular.io/guide/aot-compiler

注意:
从剪贴板粘贴仍然无法在IE中运行。这里很好地解释了为什么它不能在所有地方都起作用:Clipboard Event(堆栈溢出)

答案 1 :(得分:0)

像这样使用

model

剪贴板事件仍处于实验技术之下。这将起作用。