Angular 7单击和双击事件

Posted

技术标签:

【中文标题】Angular 7单击和双击事件【英文标题】:Angular 7 single click and double click events 【发布时间】:2019-07-06 18:23:15 【问题描述】:

我的表格行配置如下,

<tr  *ngFor="let v of mf.data | sortgrid: '-lastheartbeat'; index as i"
            [class.table-success]="venuesRunning[i]" [routerLink]="['/invoices', v.userid]">

上面的代码 sn-p 适用于单击行。 我试图在上面的代码上关联双重叮当

<tr  *ngFor="let v of mf.data | sortgrid: '-lastheartbeat'; index as i"
            [class.table-success]="venuesRunning[i]" [routerLink]="['/invoices', v.userid]"
            (dblclick)="somefunction()">

但现在也只有单一的叮当声有效。 删除 [routerlink] 时双击有效。

<tr  *ngFor="let v of mf.data | sortgrid: '-lastheartbeat'; index as i"
            [class.table-success]="venuesRunning[i]"
            (dblclick)="somefunction()">

在 Angular 7 中我应该怎么做才能同时实现单击和双击功能?

【问题讨论】:

routerLink 应该做什么?您不希望它在第一次点击后导航? @ConnorsFan routerLink 目前在单次叮当声上路由。所以我对'tr'上的routerLink很满意。我需要将双重Clink选项关联在此“tr”上的“tr”以在双重频道/点击 span>上的其他视图中路由 当它在第一次点击时开始导航时,tr 元素是否仍然存在以接收第二次点击? @ConnorsFan 不。是的……有道理。谢谢你。但是有没有办法在一个 tr 上导航到两条不同的路线?我能想到的只是在tr 单元格上添加一个按钮并激活另一条路线。 您可以在(click) 事件处理程序中以编程方式导航。如果您想在双击时进行不同的导航,则必须延迟导航,以允许触发(或不触发)双击事件。如果在单击该行时按下某个键(例如shiftctrl),您还可以导航到不同的目的地。 【参考方案1】:

在这里您可以使用超时和布尔标志来解决这个问题。

考虑以下几点:

DOM 需要几毫秒来识别双击。

但它识别双击但也识别第一次点击。

所以逻辑是这样的。

your.component.ts

export class App 

  preventSingleClick = false;
  timer: any;
  delay: Number;

  singleClick(event) 
    this.preventSingleClick = false;
     const delay = 200;
      this.timer = setTimeout(() => 
        if (!this.preventSingleClick) 
           //Navigate on single click
        
      , delay);
  

    doubleClick (event) 
      this.preventSingleClick = true;
      clearTimeout(this.timer);
      //Navigate on double click
    
 

HTML

<tr  *ngFor="let v of mf.data | sortgrid: '-lastheartbeat'; index as i"
            [class.table-success]="venuesRunning[i]"  (click)="singleClick($event)" (dblclick)="doubleClick($event)" >

【讨论】:

以上是关于Angular 7单击和双击事件的主要内容,如果未能解决你的问题,请参考以下文章

如何区分鼠标的单击和双击事件

禁用CMFCRibbonApplicationButton的单击和双击事件

winform里面的panel怎么样同时存在单击和双击事件

unity 一个物体同时添加单击和双击事件,怎么区分

vue给同一元素绑定单击click和双击事件dblclick,执行不同逻辑

使用时间器区别网页上的单击和双击