Search code examples
angularangular-material2

Angular Material - How to add a tooltip to a disabled button


I've noticed that the directive matTooltip doesn't work on a disabled button. How can I achieve it?

Example:

<button mat-raised-button [disabled]="true" matTooltip="You cannot delete that">
  <mat-icon>delete</mat-icon>
</button>

For an enabled button it works perfectly:

<button mat-raised-button [disabled]="false" matTooltip="You cannot delete that">
  <mat-icon>delete</mat-icon>
</button>

Solution

  • This doesn't work because it is triggered by mouseenter event which doesn't get fired by most browsers for disabled elements. A workaround is to add matTooltip to a parent element:

    <div matTooltip="You cannot delete that" [matTooltipDisabled]="!isButtonDisabled()">
        <button mat-raised-button [disabled]="isButtonDisabled()">
            <mat-icon>delete</mat-icon>
        </button>
    </div>
    

    The example above assumes that there is a method for determining if the button should be enabled or not. By using matTooltipDisabled the tooltip will be shown only if the button is disabled.

    References: