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

Angular中根据条件修改mat-checkbox颜色与文字,解决勾选后图标消失问题

解决方案

1. 修复勾选图标消失问题

你当前代码同时使用了[(ngModel)]双向绑定和[checked]手动控制选中状态,两者状态冲突会导致选中渲染异常,直接删除[(ngModel)]绑定即可,你已经实现了change事件和[checked]状态控制逻辑,无需额外绑定ngModel。

2. 自定义mat-checkbox选中态颜色

Angular Material组件样式默认有视图封装,需要通过::ng-deep穿透修改选中态样式,避免勾选图标和背景色重合导致消失,可在对应组件的css文件中添加以下样式:

/* 选中态复选框背景、边框颜色 */
::ng-deep .pharmacy-checkbox .mat-checkbox-checked .mat-checkbox-background {
  background-color: #1976d2; /* 可替换为你需要的主色 */
  color: #fff; /* 勾选图标颜色 */
}
::ng-deep .pharmacy-checkbox .mat-checkbox-checked .mat-checkbox-checkmark-path {
  stroke: #fff !important; /* 强制指定勾选对勾的颜色,避免和背景重合 */
}

3. 实现选中态文字颜色切换

你当前mat-label写死了行内颜色样式,删除行内样式后,通过[ngStyle]根据选中状态动态绑定颜色即可,修改后的HTML代码如下:

<div *ngFor="let subtenant of currentSubtenants; let i = index;" class="subtenant-form-btn-group"  [ngClass]="{'v-bg-color': currentSelectedTenants(subtenant)}">
  <div class="deal-form-btn-group-radio">
    <div class="pharmacy-checkbox">
      <mat-checkbox
       color="accent"  
       [checked]="currentSelectedTenants(subtenant)" 
       (change)="changeCurrentSubtenants($event,subtenant)"
       style="margin-left:10px;">
      <mat-label 
        class="subtenant-label" 
        [ngStyle]="{'color': currentSelectedTenants(subtenant) ? 'rgba(0, 0, 0, 0.87)' : '#fff'}"
      >{{subtenant.subtenantName}}</mat-label>
      </mat-checkbox>  
      </div>
  </div>
  <div >
    <div class="flex-column">
      <mat-label 
        class="subtenant-label"
        [ngStyle]="{'color': currentSelectedTenants(subtenant) ? 'rgba(0, 0, 0, 0.87)' : '#fff'}"
      >Current Lease Expiration</mat-label>
      <div 
        class="subtenant-label"
        [ngStyle]="{'color': currentSelectedTenants(subtenant) ? 'rgba(0, 0, 0, 0.87)' : '#fff'}"
      >{{subtenant.currentLeaseExpiration}}</div>
    </div>
  </div>
</div>

如果需要所有文字同步切换颜色,也可以直接在v-bg-color类中统一设置子元素的颜色,不需要逐个绑定:

.v-bg-color .subtenant-label {
  color: rgba(0, 0, 0, 0.87) !important;
}
.subtenant-form-btn-group:not(.v-bg-color) .subtenant-label {
  color: #fff !important;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:45:04