我使用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)
您可以使用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)
归档时间: |
|
查看次数: |
13733 次 |
最近记录: |