Art*_*ary 4 javascript angular
假设我们有这个模板:
<div class="myClass" (click)="doSomething($event)">
Run Code Online (Sandbox Code Playgroud)
soSomething不会在中间点击时调用。我怎么解决这个问题?
我通过使用middleclick侦听mouseup事件的小型自定义指令解决了此问题,因为在我的示例中(在macOS上),clickHostListener不会在单击中触发。
import { Directive, Output, EventEmitter, HostListener } from '@angular/core';
@Directive({ selector: '[middleclick]' })
export class MiddleclickDirective {
@Output('middleclick') middleclick = new EventEmitter();
constructor() {}
@HostListener('mouseup', ['$event'])
middleclickEvent(event) {
if (event.which === 2) {
this.middleclick.emit(event);
}
}
}
Run Code Online (Sandbox Code Playgroud)
有了这个,你可以使用类似
<button (middleclick)="doSomething()">Do something</button>
Run Code Online (Sandbox Code Playgroud)
这应该有效
<div class="myClass" (click)="$event.which == 2 ? doSomething($event) : null">
Run Code Online (Sandbox Code Playgroud)
更新 2/2018
当我发布上面的答案时,我正在一台 Linux 机器上工作,它对我有用。
现在我在 Mac 上,除了鼠标左键之外,我无法获取其他任何内容的单击事件。
您可以自己尝试使用
也可以看看
| 归档时间: |
|
| 查看次数: |
3394 次 |
| 最近记录: |