2017-10-10 55 views
1

我试图在粘贴内容之后获取文本输入字段的内容。我如何获取数据?我用的用于keyup事件的$event.target.value不适用。如果你粘贴Ctrl + V的东西,它的工作原因是由于keyup事件,但如果我尝试从浏览器的上下文菜单中粘贴某些东西,那么它不起作用。在(粘贴)事件后获取文本输入的值

这是一个非常简单的代码示例:

@Component({ 
    selector: 'my-app', 
    template: `<input type="text" [ngModel]="value" (paste)="pasteEvent($event)" (keyup)="keyupEvent($event)"> 
    <br>{{result}}` 
}) 
export class AppComponent { 
    public result: string; 

    public pasteEvent($event: any) { 
    this.result = $event.target.value; 
    console.log('paste: '+ $event.target.value); 
    console.log($event); 
    } 

    public keyupEvent($event: any) { 
    this.result = $event.target.value; 
    console.log('keyup: '+ $event.target.value); 
    } 
} 
+1

'(ngModelChange)=“pasteEvent($ event)”'(发出所有更改,不仅粘贴) –

+0

Thanks @GünterZöchbauer,您的方法非常适合我的需求。如果您可以随时创建答案,我会接受它。 – JohnDizzle

+0

谢谢,我更新了我的答案。 –

回答

1

如果你只是想在用户的过去的东西的方式编辑值相同,以获取模型更新,你可以使用

(ngModelChange)="pasteEvent($event)" 

或双向绑定

[(ngModel)]="value" 

如果你真的要处理的过去的事件直接地说,事件应该有一个clipboardData属性:

console.log($event.clipboardData); 

要获得粘贴的文本,你可以使用getData

console.log($event.clipboardData.getData('Text')); 

又见

相关问题