垫菜单应仅在长按时触发,而不在点击事件上触发

时间:2018-12-01 18:28:05

标签: angular angular-material material-design

我在同一元素上同时使用了单击和长按事件。 长按会触发工作正常的Mat菜单,单击时不起作用。如何停止会触发click事件的Mat菜单。

它只能由程序触发。

<div *ngFor="let table of tableDetails; let i = index"

          style="padding-bottom: 10px;"
          (click)="doCheckAction(table, false)"  (touchstart)='openContextMenu(true,menuTrigger,table)' (touchend)='openContextMenu(false,menuTrigger,table)'  
            >

ts:

  openContextMenu(isDown, menu, table) {
    if (table.Status !== "Available") {
      if (isDown) {
        this.pressTimer = window.setTimeout(() => {
          menu.openMenu();
        }, 1000);
      } else {
        clearTimeout(this.pressTimer);
      }
    }

  }

1 个答案:

答案 0 :(得分:0)

在doCheckAction()之前放置preventDefault():

<div ...(click)="$event.preventDefault();doCheckAction(table, false)" ...>