使用Angular2禁用文本框的剪切,复制和粘贴功能的指令

vis*_*hnu 7 ionic2 angular

我使用Angular2来限制文本框中的复制和粘贴.但是我如何编写自定义指令,以便它可以很容易地应用于所有文本字段.

以下是限制复制和粘贴功能的工作代码.

<ion-input formControlName="confirmpass" type="tel" (cut)="$event.preventDefault()" (copy)="$event.preventDefault()" (paste)="$event.preventDefault()"></ion-input>
Run Code Online (Sandbox Code Playgroud)

Aam*_*han 25

您可以在指令中使用HostListener来捕获剪切,粘贴复制事件,然后使用preventDefault().这是一个例子

import { Directive, HostListener } from '@angular/core';

@Directive({
  selector: '[appBlockCopyPaste]'
})
export class BlockCopyPasteDirective {
  constructor() { }

  @HostListener('paste', ['$event']) blockPaste(e: KeyboardEvent) {
    e.preventDefault();
  }

  @HostListener('copy', ['$event']) blockCopy(e: KeyboardEvent) {
    e.preventDefault();
  }

  @HostListener('cut', ['$event']) blockCut(e: KeyboardEvent) {
    e.preventDefault();
  }
}
Run Code Online (Sandbox Code Playgroud)

像这样使用指令

<ion-input appBlockCopyPaste formControlName="confirmpass" type="tel"></ion-input>
Run Code Online (Sandbox Code Playgroud)

工作演示


小智 21

你可以这样做

<input (paste)="(false)" />
Run Code Online (Sandbox Code Playgroud)


jit*_*der 5

您可以使用Renderer来侦听cut,copy,paste事件并调用preventDefault()您的指令,例如

@Directive({ selector: '[preventCutCopyPaste]' })

export class CopyDirective {
    constructor(el: ElementRef, renderer: Renderer) {
      var events = 'cut copy paste';
      events.split(' ').forEach(e => 
      renderer.listen(el.nativeElement, e, (event) => {
        event.preventDefault();
        })
      );

    }
}
Run Code Online (Sandbox Code Playgroud)

然后在 html

<input type="text" preventCutCopyPaste/>
Run Code Online (Sandbox Code Playgroud)

工作演示