Angular 4 Typescript-构建随后7天的日期数组



我想要构造一个包含7个日期的数组。这些日期将是SelectedDate之后的7天。我在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:无法获取未定义或null引用的属性"0"在xxxComponent.prototype.SetSelectedWeekDates(评估代码:179:143(

我可以知道我的代码出了什么问题吗?

在函数中,在未定义this.selectedWeekDates的元素上使用setDate函数。您应该使用this.selectedWeekdte获取并设置以下日期:

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在每次迭代后都会更新。

您的selectedWeekDates为空。因此出现了错误。尝试修复它:

public selectedWeekDates: Date[] = new Array(7).fill(new 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);
}
}

这将修复您当前遇到的错误。我真的不确定你想在这里实现什么。所以你可能需要稍微修正一下你的逻辑。我在屏幕上只能看到27、7次。

这是样品StackBlitz供您参考。

最新更新