【问题标题】:Using Angular Material ToolTip but can't select text on element beneath it使用 Angular Material ToolTip 但无法选择其下方元素上的文本
【发布时间】:2026-02-07 04:35:01
【问题描述】:

我有一个 Angular Material 工具提示,用于在将鼠标悬停在表格元素中的列单元格上时显示信息。除了这个功能之外,我还要求用户能够选择文本并从表格元素中突出显示它,以便他们可以复制和粘贴它。

因为我使用 Angular Material 工具提示和 ::ng-deep 将其显示在列的顶部,它会在现有 DOM 元素上创建一个覆盖,因此我无法选择列中的文本。有没有办法解决?我必须编辑 matToolTip 类吗?

谢谢!

我的最终解决方案是使用更原生的工具提示元素,该元素将成为 DOM 的一部分,并且不会阻止用户选择文本,但这并不那么漂亮,所以这是我最后的手段。

edit.component.html

import { MatTooltipModule } from '@angular/material/tooltip';

<ng-container matColumnDef="DepartmentName">
        <th mat-header-cell *matHeaderCellDef></th>
        <td
          mat-cell
          *matCellDef="let row"
          [matTooltip]="getTooltipMissingDepartments(row)"
          matTooltipClass="missing-mds-tooltip"
        >
          {{ row?.DepartmentName }}
        </td>
      </ng-container>

edit.component.scss

::ng-deep .missing-mds-tooltip {
  white-space: pre-line;
}

用户应该能够将鼠标悬停在列上并看到工具提示,以及突出显示该列的表格中的文本。

【问题讨论】:

    标签: javascript angular dom angular-material tooltip


    【解决方案1】:

    为了使其正常工作,我将以下提供程序添加到我的 custom NgModule 中,该提供程序导入我在我的应用程序中使用的所有 Angular Material 组件,然后我会根据需要导入这些组件

    import { MAT_HAMMER_OPTIONS } from '@angular/material';
    
    @NgModule({
      // imports, exports, etc. go here
    
      providers: [
        {
          provide: MAT_HAMMER_OPTIONS,
          useValue: {
            cssProps: {
              userSelect: true
            }
          },
        },
      ],
    })
    

    【讨论】:

    • 嘿,谢谢。它似乎确实有效,但我不确定它是否有任何副作用。在标准的基于浏览器的 Angular 应用程序中使用它时,我没有注意到任何问题,但没有在移动或其他平台上使用它。
    • 使用 MAT_HAMMER_OPTIONS 现在被标记为已弃用:github.com/angular/components/blob/master/src/material/core/…
    • @JanPospíšil - 感谢您的更新!看起来它将在 10.0 中被删除,所以在此之前它仍然可以使用(尽管已弃用)
    • @Kabb5 仍然无法找到任何不推荐使用的替代品... :(
    【解决方案2】:

    看起来有一个未解决的问题: https://github.com/angular/material2/issues/8817

    您可以在自动悬停工具提示时强制将文本复制到剪贴板,而不是让用户选择复制:ngx-clipboard

    【讨论】:

    • 所以据我所知,这个未解决的问题是关于选择工具提示上的实际文本,我想选择它下方工具提示上的文本。在 table 元素上,但覆盖层阻止了该元素。