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

TypeScript中同对象日志输出为何不同?Angular SimpleChanges问题

Angular ngOnChanges中SimpleChanges打印不一致问题解决

问题原因

  • 这是Angular输入属性类型转换导致的:如果你的组件from输入被定义为Date类型,当父组件传入null时,Angular会自动尝试将null转换为Date对象,而new Date(null)会生成Invalid Date。
  • JSON.stringify()对Invalid Date的处理逻辑是将其序列化为null,所以你看到序列化后的结果里previousValue是null,但直接访问该属性时,拿到的是Angular转换后的Invalid Date对象。

解决方法

方法1:修改输入属性类型(推荐)

如果业务允许from输入为null,直接把类型定义为Date | null,让Angular保留原始输入值:

@Input() from: Date | null = null;

这样changes.from.previousValue就会直接是null,不需要额外处理。

方法2:手动识别无效日期

如果无法修改输入类型,可通过判断日期有效性来还原null:

const prevValue = changes.from.previousValue;
const realPrevValue = prevValue instanceof Date && isNaN(prevValue.getTime()) ? null : prevValue;
console.log(realPrevValue); // 输出null

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:15:56