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

如何在mat-select v16中隐藏已选中的下拉选项?

解决Mat-Select选中后隐藏已选选项的方法

针对你使用的Mat-Select v16,要实现选中选项后下拉列表不再显示该选项,只需要过滤掉已选中的项即可,具体操作分两步:

1. 在组件类中添加过滤逻辑

在你的组件.ts文件里,先确保表单控件已正确初始化,然后添加一个计算属性来返回过滤后的选项数组:

import { FormGroup, FormBuilder } from '@angular/forms';
// ... 其他必要导入

export class YourComponent {
  form: FormGroup;
  // 假设你的options是类似这样的结构
  options = [
    { value: 'option1', label: '选项1' },
    { value: 'option2', label: '选项2' },
    { value: 'option3', label: '选项3' }
  ];

  constructor(private fb: FormBuilder) {
    // 初始化表单并设置默认选中值为option1
    this.form = this.fb.group({
      value: ['option1']
    });
  }

  // 过滤掉已选中的选项
  get filteredOptions() {
    const selectedVal = this.form.get('value')?.value;
    return this.options.filter(item => item.value !== selectedVal);
  }
}

2. 修改模板中的循环数据源

把模板里*ngFor的原始options换成上面定义的filteredOptions,同时移除原来的selected="option1"(因为表单初始值已通过代码设置):

<mat-form-field>
    <mat-select formControlName="value">
      <mat-option *ngFor="let item of filteredOptions"
         [value]="item.value">{{ item.label }}</mat-option>
    </mat-select>
</mat-form-field>

这样设置后,初始加载时因为默认选中了option1,下拉列表会直接显示option2和option3;后续选中任意选项时,下拉列表都会自动隐藏已选中的项,只展示未选的选项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:17:16