如何为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
相关产品推荐
相关产品推荐

