Angular 2右键单击事件?

时间:2017-01-16 05:31:26

标签: angular contextmenu

我正在使用Angular2构建交互式Web应用程序,我正在寻找一种方法来捕获角度组件上的右键单击。我还需要阻止右键单击显示浏览器上下文菜单,以便显示我自己的自定义上下文菜单。

我知道在角度1中,您必须创建一个自定义指令来捕获右键单击事件。这仍然是Angular 2的情况,还是内置/有更简单的方法吗?我已经看过一些以前的SO问题,但它们与Angular2无关。

如何完成捕获正确的点击并阻止浏览器上下文菜单出现在Angular2中?

1 个答案:

答案 0 :(得分:47)

在Angular 2+中,您可以捕获任何类似的事件:

<div (anyEventName)="whateverEventHandler($event)">
</div>

请注意$event是可选的,函数的返回是事件处理程序的返回,因此,您可以return false;来避免事件的默认浏览器操作。

在您的情况下,事件名称为contextmenu。所以,你的代码可以是这样的:

@Component({
  selector: 'my-app',
  template: `
    <div (contextmenu)="onRightClick($event)">
      Right clicked
      {{nRightClicks}}
      time(s).
    </div>
  `,
  // Just to make things obvious in browser
  styles: [`
    div {
      background: green;
      color: white;
      white-space: pre;
      height: 200px;
      width: 200px;
    }
  `]
})
export class App {
  nRightClicks = 0;

  constructor() {
  }

  onRightClick() {
    this.nRightClicks++;
    return false;
  }
}

这是一个完整的工作示例:
http://on.gurustop.net/2E0SD8e