Angular Material mat-select multiple无法将选中项推入数组问题求助
错误定位
- 核心问题在
forEach循环的判断条件中:你误将遍历的数组对象sel作为选中状态的判断主体,写为sel._selected,实际应该判断每一轮遍历的单个选项的选中属性,该条件永远不成立,因此无法进入push逻辑。 - 额外优化提示:你使用的Angular Material多选组件的
selectionChange事件中,e.source.selected本身就是所有已选中选项的集合,无需额外循环筛选可直接赋值使用。
修正后代码
const vals = []; if (e && e.source.selected.length > 0) { console.log('selected values', e.source.selected); const sel = e.source.selected; sel.forEach((item: any) => { // 修正为判断当前遍历项的选中状态 if (item._selected) { vals.push(item); console.log('EE', item); } }); // 如需简化逻辑可直接用以下代码替代整个循环 // vals = [...e.source.selected]; }
执行后即可得到你预期的选中值数组,可直接用于表单编辑模式下的选中数据绑定。
内容的提问来源于stack exchange,提问作者Mr. Learner
相关产品推荐
相关产品推荐

