Angular 在IE11中捕获粘贴事件

Angular 在IE11中捕获粘贴事件,angular,Angular,我正在寻找一个解决方案,允许我粘贴什么存在于剪贴板时,一个用户点击按钮的角度 我曾使用此代码在用户键入Ctrl+V时粘贴数据,但我不知道如何在用户触发事件时单击按钮触发此事件 constructor() { document.addEventListener('paste', (e: ClipboardEvent) => { console.log(e.clipboardData.getData('Text')); e.preventDefault(); e.s

我正在寻找一个解决方案,允许我粘贴什么存在于剪贴板时,一个用户点击按钮的角度

我曾使用此代码在用户键入Ctrl+V时粘贴数据,但我不知道如何在用户触发事件时单击按钮触发此事件

constructor() {
  document.addEventListener('paste', (e: ClipboardEvent) => {
    console.log(e.clipboardData.getData('Text'));
    e.preventDefault();
    e.stopPropagation();
  });
}

copyFromClipBoard(event) {
  // My Code goes here
}
您可以使用访问系统剪贴板。
readText()
方法返回解析为系统剪贴板上复制的文本的承诺:

模板:

<button (click)="handleClick()">Click Me</button>
这是一个正在实施的计划


希望这有帮助

最简单的方法是从角度使用
render2
ElementRef

copyFromClipBoard() {   
    /// For IE
    if (window['clipboardData']) {
      let value = window['clipboardData'].getData('Text');
      console.log(value);
    }
    else {
      // for other navigators
      navigator['clipboard'].readText().then(clipText => {        
        console.log(clipText);
      });
    }
  }
您只需在组件/指令中插入
renderr2
,然后收听粘贴事件并执行以下操作:

constructor(element: ElementRef, renderer: Renderer2) {}
并在组件类内部侦听复制/粘贴事件:

 renderer.listen(element.nativeElement, 'copy', (event) => {
      // do your stuff
    });

    renderer.listen(element.nativeElement, 'paste', (event) => {
      // Do your thing here
    });

看,如果这对你有帮助的话。我看了这篇文章,但我是说,如果angular 6有任何新的解决方案,或者有一个新的钩子来获取剪贴板数据。谢谢,我尝试了这个解决方案,但不幸的是它在IE11上不起作用。你应该在你的问题中指定你需要支持IE11。您可能还应该创建一个StackBlitz或类似工具,以帮助澄清您正在使用的元素类型。您可以使用所描述的遗留技术。您可能需要使用element ref来关注输入/文本区域,以便通过
document.execCommand(“粘贴”)
执行粘贴。不管怎样,关于你的模板需要更多的信息。你是对的,我下次会创建一个StackBiltz,它比一个简单的代码要好得多。我必须感谢你的代码,我把它和IE规范混合在一起,它就工作了。
 renderer.listen(element.nativeElement, 'copy', (event) => {
      // do your stuff
    });

    renderer.listen(element.nativeElement, 'paste', (event) => {
      // Do your thing here
    });