对象中的日期问题

问题描述 投票:0回答:1

我在角度分量中有一个对象,它是这样创建的:

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;

测试时我遇到以下问题: dateIssue

第二个下拉列表(10/3/2024)显示正确的值 - 来自数据库的值。 startDate、endDate 和 calendarValues 的 json 输出仅显示当前日期

有趣的是,calendarValues 的控制台日志给出了: enter image description here

构造函数中的控制台输出对于 calendarValues 为 null,但在 ngInit 上有点奇怪,在控制台中对象的第一行,我的 startDate 值为 2024 年 10 月 25 日,但在扩展对象中 startDate 的值为 10 月 3 日,这是正确的值来自数据库,它正确绑定到第二个下拉菜单,控制台中的 endDate 也发生了同样的值问题,但 html 中显示了 10/25/2024 的一个差异?

对此有什么想法吗?谁能详细解释一下这里发生了什么?

angular typescript
1个回答
0
投票

您可能在设置值之前记录了控制台。

预折叠是对象的快照,因此它显示当前日期。

当您打开它时,它会读取内存引用,该引用具有对象中的最新值,因此它可能会显示正确的值。

© www.soinside.com 2019 - 2024. All rights reserved.