Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular TypeScript添加一天功能_Angular_Date_Typescript_Angular2 Template - Fatal编程技术网

Angular TypeScript添加一天功能

Angular TypeScript添加一天功能,angular,date,typescript,angular2-template,Angular,Date,Typescript,Angular2 Template,我不熟悉Angular 2和打字脚本。我已经改变了jQuery,我在一些简单函数上遇到了一些问题。现在,我有一个带有两个日期选择器的UI,我正试图在第一个日期选择器更改后(添加一天)自动完成第二个日期选择器。根据这一点,以及我对JS的期望,代码必须是这样的: updateEndDate(): void { this.endDate.setDate(this.startDate.getDate() + 1); } 我有一个具有startDate和endDate参数的类,updateEndDa

我不熟悉Angular 2和打字脚本。我已经改变了jQuery,我在一些简单函数上遇到了一些问题。现在,我有一个带有两个日期选择器的UI,我正试图在第一个日期选择器更改后(添加一天)自动完成第二个日期选择器。根据这一点,以及我对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”格式的日期选择器设置startDate。这可能是问题所在吗


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

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

我找到的解决方案,但我认为不是最好的(我认为一定有一种方法可以对日期应用两种数据绑定),就是只绑定onChange事件,并在updateEndDate()方法中将字符串转换为日期,如下所示:

在模板中:

(change)="updateEndDate($event.target.value)"
在组件中:

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

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

不确定这是否有帮助,我使用此语句获取所选日期 在html中
(更改)=“updateEndDate($event)”

在ts中

updateEndDate(dateValee:MatDatepickerInputEvent){
this.endDate=新日期(dateValue.value);

}
如果您有任何特殊原因不想使用矩.js?我遵循angular.io文档,这就是原因。我已经看到,当我使用datepicker设置日期时,startDate的类型变为string,这就是问题的原因。为什么会发生这种情况?我的意思是,似乎我只能对一些小类型的数据使用双向数据绑定,比如字符串和数字,但不能对日期进行绑定,这是正确的吗?或者有办法做到这一点?@user3368457如何将
updateEndDate
绑定到
onChange
事件?来自表单的日期可能是字符串,而不是日期实例。在调用任何日期方法之前,尝试使用“newdate”再次解析日期