我是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是一个标准的问题)。
答案 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)"