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

Angular16中MatSelectionList无法设置值的问题求助

Angular 16 MatSelectionList 报错:TypeError: values.forEach is not a function

错误根源是单选模式下的MatSelectionList仍然期望ngModel绑定的值是数组类型,哪怕你设置了[multiple]="false"。直接给selectedItem赋值单个字符串,组件内部会把这个值当成要遍历的集合,而字符串没有forEach方法,因此抛出错误。

方案1:将选中值改为数组类型(推荐,符合组件设计)

修改TS代码,把单个选中项包裹在数组中:

mylist = ['elementA', 'elementB', 'elementC'];
selectedItem = ['elementB']; // 用数组存储单选结果

HTML代码无需修改,保持原有的双向绑定即可。

方案2:手动处理选中事件(适合需要单个值的场景)

如果业务逻辑必须使用单个值而非数组,可以放弃双向绑定,改用selectionChange事件手动同步选中状态:

HTML代码

<mat-selection-list
    [multiple]="false"
    (selectionChange)="onSelectionChange($event)">
    <mat-list-option 
        *ngFor="let item of mylist" 
        [value]="item"
        [selected]="item === selectedItem">
        {{ item }}
    </mat-list-option>
</mat-selection-list>

TS代码

import { MatSelectionListChange } from '@angular/material/list';

mylist = ['elementA', 'elementB', 'elementC'];
selectedItem = 'elementB';

onSelectionChange(event: MatSelectionListChange): void {
    this.selectedItem = event.options[0].value;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:53:27