TypeScript添加一天功能

时间:2017-06-25 19:04:22

标签: angular date typescript angular2-template

我是Angular 2和TypeScript的新手。我已经从jQuery改变了,我遇到了一些简单函数的问题。现在,我有一个带有两个日期选择器的UI,我试图在第一个更改后自动完成第二个(添加一天)。根据这个Adding days to Date in javascript / typescript gives completely wrong date,以及我对JS的期望,代码必须是这样的:

updateEndDate(): void {
  this.endDate.setDate(this.startDate.getDate() + 1);
}

我有一个具有startDate和endDate参数的类,而updateEndDate()方法绑定到startDate datepicker输入的onChange()事件。

当我尝试时,我在控制台中收到此消息:

this.endDate.getDate is not a function at ItemTemplateComponent.webpackJsonp..

我认为我做错了什么,但我不知道是什么。有人知道我错过了什么吗?

编辑:

我尝试使用辅助日期参数来检查函数或参数是否有问题。我这样做了:

auxDate: Date;

ngOnInit(): void {
  this.auxDate = new Date();
}

updateEndDate(): void {
  console.log(auxDate);
  this.auxDate.setDate(this.auxDate.getDate() + 1);
  console.log(auxDate);
}

这很好。所以我的问题在于参数。

我的班级定义:

export class DateRange {
  startDate: Date;
  endDate: Date;
}

我使用设置“YYYY-MM-DD”格式的datepicker设置startDate。这可能是问题吗?

更新(解决方案,而不是我认为最好的方式):

正如我评论的那样,问题是当使用双向数据绑定将startDate值(Date)与模板中相应的输入类型日期绑定时,输入的值被理解为字符串vy Angular2,而不是Date,所以updateEndDate()方法崩溃。

我找到的解决方案,但我认为不是最好的(我认为必须有一种方法来为日期应用双向数据绑定)是仅绑定事件onChange并将字符串转换为方法中的日期updateEndDate()as:

在模板中:

(change)="updateEndDate($event.target.value)"

在组件中:

updateEndDate(dateValee: string): void {
this.endDate = new Date(dateValue);
... OTHER LINES
}

现在我遇到了问题,因为“新日期(dateValue)”没有给我正确的日期,但那是另一个问题(我认为因为GMT是一个标准的问题)。

1 个答案:

答案 0 :(得分:0)

不确定这是否有帮助,我使用此语句获取选定的日期 在html中 <html> <!-- <title>title</title> --> <head> <script> let title = () => alert("huh?") //null; //undefined; console.log("Title", title); window.history.replaceState({}, title, "NewHTML.page"); //works as expected </script> </head> <body> Testing </body> </html>

在ts

(change)="updateEndDate($event)"