Angular Material Mat Menu禁用matMenuTriggerFor

For*_*stG 2 anchor angular-material angular

我有以下材料菜单:

<a mat-button [matMenuTriggerFor]="menu" disabled="true">Menu</a>
<mat-menu #menu="matMenu">
  <button mat-menu-item>Item 1</button>
  <button mat-menu-item>Item 2</button>
</mat-menu>
Run Code Online (Sandbox Code Playgroud)

请注意,我有一个<a>标签而不是一个<button>.

我想禁用mat菜单触发器.如果我使用按钮标签,它可以工作,如果我将它用作ancor标签,它仍会打开菜单:

在此输入图像描述

任何想法如何通过anchor链接标签来防止这种情况? Stackblitz的例子在这里.

小智 11

尝试这个

[matMenuTriggerFor]="disabled?null:menu"
Run Code Online (Sandbox Code Playgroud)


Yah*_*sam 7

好吧,锚标签没有禁用属性,所以你不能这样禁用它.
您可以将其更改为按钮并更改其样式.

或者你可以使用
pointer-events: none

禁用点击它.
例如 :

<a mat-button [matMenuTriggerFor]="menu" [ngClass]="{ 'disabled' :condition }">Menu</a>
 <mat-menu #menu="matMenu">
  <button mat-menu-item>Item 1</button>
   <button mat-menu-item>Item 2</button>
 </mat-menu>
Run Code Online (Sandbox Code Playgroud)

在CSS中:

.disabled {
  pointer-events:none;
  opacity:.5;
 }
Run Code Online (Sandbox Code Playgroud)

  • 只是警告,这会禁用元素上的所有指针事件。如果您有工具提示或其他点击处理程序,这些也将被禁用。 (4认同)