Angular 4打字稿-构造随后7天的日期数组 [英] Angular 4 Typescript - Construct Array of Dates of subsequent 7 Days
问题描述
我想构造一个包含7个日期的数组.这些日期将是SelectedDate之后的7天.我已经在Component.ts
I want construct an array of 7 dates. those dates will be 7 subsequent days from a SelectedDate. I have written following code in Component.ts
public selectedWeekDates: Date [];
public selectedWeek: Date = new Date();
SetSelectedWeekDates(): void {
var dte = new Date();
dte = this.selectedWeek;
for (let i: number = 1; i < 8; i++) {
this.selectedWeekDates[i - 1].setDate(dte.getDate() + i);
}
}
我的html如下
.
.
.
<ng-container *ngFor="let dates of selectedWeekDates">
<div style="padding: 10px;">
{{ dates| date:"dd" }}
</div>
</ng-container>
.
.
.
我在控制台中遇到错误
TypeError:无法获取未定义或空引用的属性"0"在xxxComponent.prototype.SetSelectedWeekDates(eval代码:179:143)
TypeError: Unable to get property '0' of undefined or null reference at xxxComponent.prototype.SetSelectedWeekDates (eval code:179:143)
我可以知道我的代码有什么问题吗?
May I know what is wrong in my code?
推荐答案
在您的函数中,您正在对 this.selectedWeekDates
的未定义元素使用 setDate
函数.您应该使用 this.selectedWeek
或 dte
来获取和设置日期,如下所示:
In your function, you are using setDate
function on elements of this.selectedWeekDates
while they are undefined. You should use this.selectedWeek
or dte
to get and set your dates as below:
SetSelectedWeekDates(): void {
let dte: Date = new Date(this.selectedWeek);
for (let i = 1; i < 8; i++) {
this.selectedWeekDates[i-1]=new Date(dte.setDate(dte.getDate() + 1));
}
}
也不要在getDate()之后添加 i
,而是像上面那样添加1,因为setDate()函数在每次迭代中将 dte
递增一天,这意味着dte是每次迭代后更新.
Also instead of adding i
after getDate(), add 1 as done above as setDate() function is incrementing dte
by a day in every iteration which means dte is updated after every iteration.
这篇关于Angular 4打字稿-构造随后7天的日期数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!