我在角度分量中有一个对象,它是这样创建的:
calendarValues = { startDate: new Date(), endDate: new Date() };
在 ngOnInit 上,我从后端获取数据并将值分配给该对象:
this.calendarValues.startDate = new Date(this.leaveRecordForEdit.leaveStart);
this.calendarValues.endDate = new Date(this.leaveRecordForEdit.leaveEnd);
并且该对象 calendarValues 被转发到子组件,该子组件使用
[calendarValues]="calendarValues"
显示 2 个日期下拉列表,并且在子组件中我使用 @Input() calendarValues: any;
并再次在 ngOnInit 上将这些日期分配给要绑定到 html 的变量:
this.startDate = this.calendarValues.startDate;
this.endDate = this.calendarValues.endDate;
第二个下拉列表(10/3/2024)显示正确的值 - 来自数据库的值。 startDate、endDate 和 calendarValues 的 json 输出仅显示当前日期
有趣的是,calendarValues 的控制台日志给出了:
构造函数中的控制台输出对于 calendarValues 为 null,但在 ngInit 上有点奇怪,在控制台中对象的第一行,我的 startDate 值为 2024 年 10 月 25 日,但在扩展对象中 startDate 的值为 10 月 3 日,这是正确的值来自数据库,它正确绑定到第二个下拉菜单,控制台中的 endDate 也发生了同样的值问题,但 html 中显示了 10/25/2024 的一个差异?
对此有什么想法吗?谁能详细解释一下这里发生了什么?
您可能在设置值之前记录了控制台。
预折叠是对象的快照,因此它显示当前日期。
当您打开它时,它会读取内存引用,该引用具有对象中的最新值,因此它可能会显示正确的值。