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

如何程序化设置mat-select控件的显示文本?(附示例项目)

自定义mat-select多选控件的显示文本

当然可以实现,直接用Angular Material的displayWith属性就能自定义选中项的显示文本,具体操作如下:

1. 组件类中添加映射关系和显示函数

在你的组件文件(比如select-overview-example.ts)里,先定义原选项文本和目标显示文本的映射,再写一个处理显示逻辑的函数:

import { Component } from '@angular/core';
import { FormControl } from '@angular/forms';

@Component({
  selector: 'select-overview-example',
  templateUrl: 'select-overview-example.html',
})
export class SelectOverviewExample {
  toppings = new FormControl('');
  toppingList: string[] = ['one', 'two'];
  
  // 定义选项与显示文本的映射
  private optionMap: Record<string, string> = {
    'one': '1',
    'two': '2'
  };

  // 自定义显示逻辑的函数
  displaySelected(selected: string[] | null): string {
    if (!selected || selected.length === 0) {
      return '';
    }
    // 将选中项转换为目标文本并拼接
    return selected.map(item => this.optionMap[item]).join(', ');
  }
}

2. 模板中绑定displayWith属性

在mat-select标签上添加[displayWith]="displaySelected",让控件使用我们自定义的显示逻辑:

<mat-form-field appearance="fill">
  <mat-label>Toppings</mat-label>
  <mat-select [formControl]="toppings" multiple [displayWith]="displaySelected">
    <mat-option *ngFor="let topping of toppingList" [value]="topping">{{topping}}</mat-option>
  </mat-select>
</mat-form-field>

这样设置后,选中"one"时控件会显示"1",同时选中"one"和"two"时就会显示"1, 2",完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 16:28:14