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

Angular12 mat-select多选组件如何设置打开时的默认选中项

解决方案

你遇到的问题核心是两点:多选FormControl初始值类型错误、默认值赋值时机不对,按以下步骤修改即可:

1. 修正FormControl初始值

mat-select 多选模式下,绑定的FormControl值必须是数组类型,你现在初始化给的是空字符串,类型不匹配自然无法正常选中。
修改constructor里的初始化代码:

// 修改前
// this.applicativoDiVenditaControl = new FormControl('', Validators.required);
// 修改后
this.applicativoDiVenditaControl = new FormControl([], Validators.required);

2. 数据源加载完成后赋值默认选中项

必须等applicativoDiVenditaList的接口数据返回后,再给FormControl赋值要默认选中的内容,此时option已经渲染完成,可以正常匹配值。
修改getSalesApplication方法:

getSalesApplication() {
    this.productCharService.getChar('sales').subscribe(
      (data) => {
        this.applicativoDiVenditaList = data;
        // 这里填入你要默认选中的value值列表即可
        const targetValues = ['要选中的值1', '要选中的值2'];
        // 如果默认值来自传入的product参数,直接取对应字段即可,比如:
        // const targetValues = this.product.selectedSalesApps || [];
        this.applicativoDiVenditaControl.setValue(targetValues);
      },
      (error) => {
        console.log(error);
      }
    );
  }

额外说明

你之前测试的compareWith方案是针对option绑定对象的场景,你现在的mat-option绑定的[value]是applicativoDiVendita.value(基础类型字符串/数字),不需要额外加compareWith逻辑,只要值匹配就会自动选中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:36:01