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

解决frxjs-Ngx-Timeline中Cannot read properties of undefined错误

修复Ngx-Timeline 19.0.0中Cannot read properties of undefined (reading 'getTime')错误

核心原因

这个错误是因为组件内部调用了Date.getTime()方法,但传入的date字段不是有效的Date对象(可能是undefined、null或字符串/数字类型)。以下是针对性修复方案:


1. 强制确保所有事件的date为合法Date对象

19.0.0版本的NgxTimelineEvent要求date必须是实例化的Date对象,不能是日期字符串、数字或未定义值:

  • 错误写法:
    // 字符串或undefined都会触发错误
    const events = [{ title: 'Test', date: '2024-05-20' }, { title: 'Test2' }];
    
  • 正确写法:
    import { NgxTimelineEvent } from '@frxjs/ngx-timeline';
    
    const events: NgxTimelineEvent[] = [
      { title: 'Test', date: new Date('2024-05-20') },
      { title: 'Test2', date: new Date() } // 确保每个事件都有date字段
    ];
    

2. 处理异步数据加载的时序问题

如果事件数据来自API请求或异步操作,组件初始化时数据可能未就绪,导致模板渲染时事件数组为空或date字段未赋值:

  • 在模板中添加空值判断,避免组件在数据就绪前渲染:
    <!-- 确保events存在且不为空时再渲染组件 -->
    <ngx-timeline *ngIf="timelineEvents?.length" [events]="timelineEvents"></ngx-timeline>
    

3. 调试定位问题事件

在组件中添加日志,排查具体哪个事件的date字段异常:

ngOnInit() {
  // 打印所有事件的date值,定位问题项
  this.timelineEvents.forEach((event, idx) => {
    console.log(`事件${idx}的date值:`, event.date);
    if (!(event.date instanceof Date)) {
      console.error(`事件${idx}的date不是合法Date对象`);
    }
  });
}

4. 临时方案:降级版本

如果确认是19.0.0版本的bug,可暂时降级到18.x版本:

npm uninstall @frxjs/ngx-timeline
npm install @frxjs/ngx-timeline@18.0.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:42:04