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

如何为Angular Material多选组件设置初始默认选中值?

Angular Material 多选下拉默认选中问题解决方案

问题根因

  • 表单初始化代码位置错误:你将this.form = this.formBuilder.group(this.formularioOriginal);写在了constructor方法外部的类属性定义区域,该赋值逻辑不会正常执行,需要放到组件初始化生命周期钩子或constructor内部。
  • 多选控件值格式不符合要求:开启multiple属性的mat-select仅接受数组格式的选中值,你后续测试的两种方案都传入了单个数值,不符合控件要求因此不生效。

修正后代码

组件逻辑代码

export class FiltroOfertasComponent implements OnInit {
  private now: Date = new Date();
  actualYear: number = this.now.getFullYear();
  years: number[] = [this.actualYear - 2, this.actualYear - 1, this.actualYear];

  form: FormGroup;

  formularioOriginal = {
    // 多选控件初始值保持数组格式即可
    años: [this.actualYear],
    fechaPresentada: '',
    descripcion: '',
    organismoId: 0,
    presentada: false,
    adjudicada: false
  }

  constructor(private formBuilder: FormBuilder) { }

  ngOnInit(): void {
    // 表单初始化放到ngOnInit中执行
    this.form = this.formBuilder.group(this.formularioOriginal);
    // 如果依然不生效,可以取消注释下方代码手动赋值
    // this.form.get('años')?.setValue([this.actualYear]);
  }
}

模板代码无需修改,保持原有逻辑即可:

<form [formGroup]="form">
 <mat-form-field appearance="outline">
  <mat-select formControlName="años" multiple placeholder="Años">
   <mat-option *ngFor="let year of years" [value]="year">{{year}}</mat-option>
  </mat-select>
 </mat-form-field>
</form>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:27:03