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

Angular表单按年份筛选数据时报getFullYear is not a function错误如何解决

报错原因

报错的核心原因是 oferta.fechaPresentacionFulcrum 字段不是 Date 类型,无法调用 Date 原型上的 getFullYear() 方法。
绝大多数情况是该字段为后端返回的字符串格式日期(如ISO格式的日期字符串 2021-06-15T08:00:00)、或者为null/undefined,直接调用Date实例方法就会抛出该错误。

解决方案

有两种常用的修复方式,按需选择即可:

方案1:提前统一转换原始数据类型

在获取到列表原始数据 ofertasOriginal 时,统一把日期字段转成合法的Date对象,避免后续筛选时重复处理:

// 示例:接口请求拿到返回数据后做预处理
this.ofertasOriginal = response.list.map(item => {
  return {
    ...item,
    // 兼容空值,避免生成Invalid Date
    fechaPresentacionFulcrum: item.fechaPresentacionFulcrum ? new Date(item.fechaPresentacionFulcrum) : null
  }
})

方案2:筛选时做兼容处理

如果不想修改原始数据,直接在筛选逻辑里增加类型校验和转换即可,同时兼容空值和非法日期场景:

buscarOfertas(valores: any) {
  if (valores.años) {
    this.ofertas = this.ofertas.filter(oferta => {
      const rawFecha = oferta.fechaPresentacionFulcrum;
      // 空值直接过滤掉
      if (!rawFecha) return false;
      // 统一转成Date类型
      const fecha = typeof rawFecha === 'string' ? new Date(rawFecha) : rawFecha;
      // 校验是合法Date后再取年份比较,同时把表单值转成数字避免类型不一致
      return fecha instanceof Date && !isNaN(fecha.getTime()) 
        ? fecha.getFullYear() === Number(valores.años)
        : false;
    });
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:06:07