我有一个函数可以迭代一个月中的几天。从那里,我用ngFor在html中显示它们。我想将日期数字显示为文本,将日期名称(星期一,星期二,星期三等)显示为每天的课程。
monthDays = []; // global variable
getDaysInMonth(month, year) {
var date = new Date(year, month);
var days = []; // 1,2,3
var daysName = []; // mon, tue, wed
while (date.getMonth() === month) {
this.monthDays.push({
days: days.push(moment(date).format("D")),
daysName: daysName.push(moment(date).format("M"))
})
date.setDate(date.getDate() + 1);
}
console.log(this.monthDays);
}
因为我需要两个属性(days和daysName),所以我将它们推入monthDays全局变量数组中,但结果只是月份中的数字
Array(31) // I.e Jan getDaysInMonth(1,2019)
0: {days: 1, daysName: 1} // should be days: 1 , daysName: 'Tue'
1: {days: 2, daysName: 2} // should be days: 2 , daysName: 'Wed'
所以我可以像在html中那样使用对象
<p *ngFor="let x of monthDays" class="{{x.daysName}}" >{{ x.days }}</p>
任何帮助或朝正确的方向前进都是很好的。
答案 0 :(得分:2)
因为push
返回数组Array push的新长度,所以days
和daysName
是数组的长度。我认为您想要获取具有2个属性的数组对象是day和dayname。试试吧:
monthDays = []; // global variable
getDaysInMonth(month, year) {
var date = new Date(year, month);
var days = []; // 1,2,3
var daysName = []; // mon, tue, wed
while (date.getMonth() === month) {
this.monthDays.push({
days: moment(date).format("D"),
daysName: moment(date).format("dddd")
})
date.setDate(date.getDate() + 1);
}
console.log(this.monthDays);
}