我想在两次单击触发元素时打开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 = ()=>{}
}
答案 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();
}
}
希望这对您有所帮助。