Directive to disable Cut, Copy and Paste function for textbox using Angular2

前端 未结 2 1331
刺人心
刺人心 2020-12-05 20:21

I am using Angular2 to restrict the copy and paste in textbox. But how do i write a custom directive, so that it will be easy to apply for all the text fields.

Below

相关标签:
2条回答
  • 2020-12-05 21:12

    You can use Renderer to listen to cut,copy,paste events and call preventDefault() in your directive something like

    @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();
            })
          );
    
        }
    }
    

    Then in html

    <input type="text" preventCutCopyPaste/>
    

    Working Demo

    0 讨论(0)
  • 2020-12-05 21:26

    You can use a HostListener in your directive to catch cut, paste and copy events and then use preventDefault(). Here's an example

    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();
      }
    }
    

    Use directive like so

    <ion-input appBlockCopyPaste formControlName="confirmpass" type="tel"></ion-input>
    

    Working demo

    0 讨论(0)
提交回复
热议问题