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

手动编辑MatDatePicker日期时抛出Cannot read properties of undefined错误

这个报错本质是MatDatepickerInput触发input事件时,内部用于处理输入值的相关实例未正确初始化,或者手动输入的内容触发的parse逻辑执行失败导致上下文丢失,可按以下步骤排查解决:

  • 排查全局input事件拦截/第三方插件冲突
    优先检查项目中是否存在全局作用的input指令、输入掩码插件(如ngx-mask、text-mask等)、或者全局监听input事件的逻辑,这类逻辑如果修改了input的原生事件对象、或者提前劫持了input值变更,会打断MatDatepickerInput的内部初始化流程。如果存在这类插件,给日期选择器的input添加对应忽略配置即可,以ngx-mask为例可添加[specialCharacters]="[]"或者配置和日期格式匹配的mask="00/00/00",避免插件修改输入值触发组件异常。
  • 检查日期适配器与格式配置
    确认项目根模块/共享模块中MomentDateAdapter的配置是否完整,手动输入日期时会调用parse逻辑,若配置缺失会导致执行报错,参考正确配置:
import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
import { MomentDateAdapter } from '@angular/material-moment-adapter';

export const CUSTOM_DATE_FORMATS = {
  parse: {
    dateInput: 'DD/MM/YY', // 和input的placeholder格式保持一致
  },
  display: {
    dateInput: 'DD/MM/YY',
    monthYearLabel: 'MMM YYYY',
    dateA11yLabel: 'LL',
    monthYearA11yLabel: 'MMMM YYYY',
  },
};

// 对应模块的providers数组中添加以下配置
providers: [
  {provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]},
  {provide: MAT_DATE_FORMATS, useValue: CUSTOM_DATE_FORMATS},
]
  • 清理依赖缓存
    由于升级后依旧报错、测试项目正常,大概率是现有项目依赖版本不一致导致的兼容问题,执行以下操作重新安装依赖:
  1. 删除node_modules文件夹
  2. 删除package-lock.json或者yarn.lock文件
  3. 执行npm install或者yarn install重新安装所有依赖
  • 检查表单控件初始值
    确认formControl初始化时没有赋值为不符合类型的值,不要设置为空字符串,默认值可以设置为null或者合法的Moment/Date对象:
this.form = this.fb.group({
  from: [null] // 禁止赋值为''等非日期/非空类型值
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:36:03