在移动设备上全局禁用 Mat-Tooltip

问题描述 投票:0回答:1

我正在使用 Angular Material 开发 Angular 应用程序,并且遇到了 mat-tooltip 组件的问题。具体来说,我需要在移动设备上全局禁用触摸事件的工具提示,同时使桌面上的悬停事件保持活动状态。

我已尝试使用 Angular Material 文档中建议的以下方法全局配置此行为:

app.module.ts

{
  provide: MAT_TOOLTIP_DEFAULT_OPTIONS,
  useValue: { touchGestures: 'off' },
}

但是,这种方法似乎不适用于我的应用程序。


我尝试过的另一种方法:

结合 npm 包

ngx-device-detector
,我在
app-component.ts
中创建了一个方法,在初始化应用程序时调用该方法。因此,如果用户根据我的服务使用移动设备,则会将
.scss
类添加到我的根元素中,该类应将
display: none;
属性全局分配给所有 mat-tooltips。

app.component.ts

isMobileOrTablet: boolean = false;

constructor(private deviceService: DeviceDetectorService) {
this.checkDevice()
}

checkDevice() {
    if (this.deviceService.isMobile() || this.deviceService.isTablet()) {
      this.isMobileOrTablet = true;
    }
}

get appClasses(): string {
    return this.isMobileOrTablet ? 'disable-tooltips' : '';
  }

styles.scss

.disable-tooltips {
  .mat-tooltip {
    display: none !important;
  }
}

之后我将其添加到我的根元素中:

app.component.html

<!-- This is my root-element -->
<app-menue class="{{ appClasses }}"></app-menue>

当我在移动设备上时,该类会正确分配给我的元素,因此这是有效的。然而,这也没有效果,工具提示仍然显示在移动设备上......

是否有一种可靠的方法来全局配置 mat-tooltip 以在整个应用程序中禁用触摸手势,而无需手动向每个元素添加

matTooltipDisabled
属性?

任何演示如何实现这一目标的指导或示例将不胜感激。

angular mobile angular-material
1个回答
0
投票

看来这段代码毕竟有效了。

{
  provide: MAT_TOOLTIP_DEFAULT_OPTIONS,
  useValue: { touchGestures: 'off' },
}

问题是我的平板电脑总是要求桌面版本。所以我显然没有触发任何触摸事件。

删除此复选框后,它按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.