html - 在下拉列表中捕获粘贴事件
问题描述
我试图捕捉输入字段上发生的粘贴事件。它适用于 textarea 和 input 但不适用于下拉菜单。选择。这是我的指令,console.log 永远不会被调用。
import { Directive, HostListener } from '@angular/core';
@Directive({ selector: '[catchPasteEvents]' })
export class CatchPastEvent {
@HostListener('onpaste') onPaste(event) {
console.log('Paste', event);
}
}
解决方案
I created this directive that set a listener on document paste (as suggested by Sergey) but only when the select element is focused.
@Directive({ selector: 'select[selectPaste]' })
export class SelectPasteDirective implements OnDestroy {
@Output()
public paste: EventEmitter<ClipboardEvent> = new EventEmitter();
private listener: (event: ClipboardEvent) => void = this.handlePaste.bind(
this,
);
public ngOnDestroy(): void {
document.removeEventListener('paste', this.listener);
}
@HostListener('focus')
public onFocusedItem() {
document.addEventListener('paste', this.listener);
}
@HostListener('blur')
public onBlurItem() {
document.removeEventListener('paste', this.listener);
}
private handlePaste(event: ClipboardEvent) {
this.paste.emit(event);
}
}
推荐阅读
- angular - 测试角度 HttpInterceptor
- powershell - Powershell - Disable and move users to a new OU
- sql-server - 从不同选项卡中的数据表中获取值
- reactjs - 在 React-Redux 应用程序中 - 单击 MaterialUI 菜单的菜单项后,菜单项列表移动到页面左侧
- python - 使用 Paramiko SFTP 客户端搜索和替换文件
- hibernate - Hibernate CriteriaBuilder 案例语句:如何使用 CriteriaBuilder 和 Case 语句根据条件获得 avg() 薪水。?
- assembly - 什么函数设置了“program_invocation_name”?什么时候?
- python - python中的日期列具有更多的NAT值
- sql - SQL如何选择浏览次数最多的产品
- postgresql - 如果在连接语句中不使用主表/键有任何缺点