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

Angular mat-select selectionChange事件报无法读取undefined的value属性错误

报错原因

mat-select的selectionChange事件抛出的不是原生DOM change事件对象,不存在target属性,因此访问event.target.value时会得到undefined,最终触发「Cannot read properties of undefined (reading 'value')」错误。
该事件实际输出的是MatSelectChange类型的实例对象,当前选中的选项值直接挂载在对象的value属性上,不需要通过target层级获取。你当前模板中的事件绑定写法没有问题,错误完全出在TS侧的取值逻辑。

修复方案

直接修改事件处理函数中的取值逻辑,将event.target.value替换为event.value即可:

/**
 * Function for set the year in actual years dropdown
 */
setActualYear(event: MatSelectChange): void {
  // 直接读取事件对象上的value属性
  this.year = this.navService.year = parseInt(event.value, 10);
  localStorage.setItem('setYearForUserNavigation', `${this.year}`);
  this.navService.sendNavEventUpdate('yearChanged');
}

如果需要TS类型校验,在组件文件顶部导入对应类型即可,不用再把event声明为any:

import { MatSelectChange } from '@angular/material/select';

补充提示:如果你navService.actualYearsDropdown里存的年份本身就是number类型,可以去掉parseInt转换,直接使用event.value赋值即可,只有当绑定的选项值是字符串格式的数字时才需要做类型转换。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:45:32