You need to enable JavaScript to run this app. 如何实现mat-grid-tile组件类似单选按钮的可选中功能?
优惠活动
大模型
产品
解决方案
定价
更多

如何实现mat-grid-tile组件类似单选按钮的可选中功能?

实现mat-grid-tile单选选中效果方案

1. 组件类新增选中状态变量

在对应ts组件文件中定义存储选中项的变量和切换选中状态的方法:

// 存储当前选中的套餐
selectedPackage: any = null;

// 点击切换选中项
selectPackage(pkg: any) {
  this.selectedPackage = pkg;
}

如果需要默认选中某一项,直接在ngOnInit生命周期中给selectedPackage赋值对应套餐对象即可。

2. 修改模板代码绑定交互逻辑

给mat-grid-tile新增点击事件、动态样式判断:

<mat-grid-list cols="3" rowHeight="1:1" [gutterSize]="'30px'" style="width:90%">
  <mat-grid-tile 
    *ngFor="let package of packageList" 
    class="package-box"
    (click)="selectPackage(package)"
    [ngClass]="{'selected-tile': selectedPackage === package}"
  >
    <div style="display: flex; flex-direction:column; text-align: center;">
      <div>
        <h2>
          {{package.package_name}}
        </h2>
      </div>
      <div>
        <p>${{package.mrp_price}}</p>
      </div>
    </div>
  </mat-grid-tile>
</mat-grid-list>

注:如果你的package对象有唯一id字段,也可以用selectedPackage?.id === package.id做判断,稳定性更高。

3. 新增选中状态样式

在组件的css/scss文件中添加选中效果样式,可根据你的设计需求调整:

.package-box {
  cursor: pointer;
  transition: all 0.2s ease;
  border: 2px solid #eee;
  border-radius: 8px;
}

/* 选中状态样式 */
.selected-tile {
  border-color: #2196f3;
  background-color: #e3f2fd;
  box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);
}

后续需要获取选中值时,直接读取selectedPackage变量即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 17:06:03