You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改样式让mat-select下拉框已选中项不显示特殊选中效果

解决mat-select历史选中项高亮问题的方案

你可以通过样式覆盖的方式实现需求,根据你使用的Angular Material版本选择对应的方法即可:

方法1:全局生效修改

适用于所有mat-select都需要作为菜单使用、不需要选中高亮的场景:

  • 若使用Angular Material 15+(MDC重构版本),在全局样式文件styles.scss中添加以下代码:
.mdc-list-item.mat-mdc-option.mat-selected {
  /* 清除选中状态背景色 */
  --mdc-list-list-item-selected-container-color: transparent;
  /* 文字颜色和普通选项保持一致 */
  --mdc-list-list-item-label-text-color: inherit;
  /* 可选:隐藏选中项前的勾选图标 */
  .mat-mdc-option-pseudo-checkbox {
    display: none;
  }
}
  • 若使用Angular Material 14及更早版本,在全局样式文件中添加以下代码:
.mat-option.mat-selected {
  background: transparent !important;
  color: inherit !important;
}
/* 可选:隐藏选中项前的勾选图标 */
.mat-option.mat-selected .mat-pseudo-checkbox {
  display: none !important;
}

方法2:局部生效修改

仅给指定的mat-select关闭选中高亮,避免影响其他正常使用的选择框:

  1. 给目标mat-select添加自定义类
<mat-select class="no-highlight-menu">
  <!-- 选项内容 -->
</mat-select>
  1. 全局样式文件中添加对应样式(以Angular Material 15+为例,旧版本替换对应类名即可)
.no-highlight-menu {
  .mdc-list-item.mat-mdc-option.mat-selected {
    --mdc-list-list-item-selected-container-color: transparent;
    --mdc-list-list-item-label-text-color: inherit;
    .mat-mdc-option-pseudo-checkbox {
      display: none;
    }
  }
}

注意:mat-select的下拉面板默认生成在全局DOM的body节点下,不推荐在组件样式中使用::ng-deep修改,会有全局样式污染的风险。

内容的提问来源于stack exchange,提问作者NoSoup4you

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:57:03