【问题标题】:Angular 2 right click events?Angular 2右键单击事件?
【发布时间】:2017-05-30 21:58:15
【问题描述】:

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

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

如何实现捕获右键单击并防止浏览器上下文菜单出现在 Angular2 中?

【问题讨论】:

    标签: angular contextmenu


    【解决方案1】:

    在 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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多