双击如何打开角度垫菜单?

时间:2020-09-29 09:55:11

标签: javascript angular angular-material

我想在两次单击触发元素时打开Mat-menu。 目前,它是在首次点击后打开的,在另一次点击后关闭的。

<div [matMenuTriggerFor]="menu" #menuTrigger="matMenuTrigger">Trigger element</div>
<mat-menu #menu="matMenu">
  <button mat-menu-item>Item 1</button>
  <button mat-menu-item>Item 2</button>
</mat-menu>

试图添加(dblclick)=“ menuTrigger.OpenMenu()”来触发元素。

<div (dblclick)="menuTrigger.OpenMenu()" [matMenuTriggerFor]="menu" #menuTrigger="matMenuTrigger">Trigger element</div>
<mat-menu #menu="matMenu">
  <button mat-menu-item>Item 1</button>
  <button mat-menu-item>Item 2</button>
</mat-menu>

试图添加(focus)=“ menuTrigger.openMenu()”来触发元素。

<div (focus)="menuTrigger.openMenu()" [matMenuTriggerFor]="menu" #menuTrigger="matMenuTrigger">Trigger element</div>
<mat-menu #menu="matMenu">
  <button mat-menu-item>Item 1</button>
  <button mat-menu-item>Item 2</button>
</mat-menu>

尝试从component.ts打开

export class ExampleComponent {
  @ViewChild('menuTrigger') trigger: MatMenuTrigger;

  open() {
    this.trigger.openMenu()
  }

<div (dblclick)="open()" [matMenuTriggerFor]="menu" #menuTrigger="matMenuTrigger">Trigger element</div>
<mat-menu #menu="matMenu">
  <button mat-menu-item>Item 1</button>
  <button mat-menu-item>Item 2</button>
</mat-menu>

试图从触发元素中删除点击处理程序

export class ExampleComponent implements AfterViewInit{
  @ViewChild('menuTrigger') trigger: MatMenuTrigger;

  ngAfterViewInit() {
    this.trigger._handleClick = ()=>{}
  }

1 个答案:

答案 0 :(得分:1)

您可以尝试类似

<div [matMenuTriggerFor]="menu" (dblclick)="someMethod()">Trigger element</div>
<mat-menu #menu="matMenu">
  <button mat-menu-item>Item 1</button>
  <button mat-menu-item>Item 2</button>
</mat-menu>

然后在控制器中

class MyComponent {
  @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;

  someMethod() {
    this.trigger.openMenu();
  }
}

希望这对您有所帮助。