我有一个组件,并尝试为一个对象分配一些道具。试试no1。我没有错,但在UI上没有显示任何内容,在尝试no2我有一个错误“无法设置未定义的属性编号”。
days: Day[] = [];
now: Date = new Date();
ngOnInit() {
this.days = [];
for (let i = 0; i < this.numberOfDaysCurrentMonth; i++) {
// try no.1
this.days.forEach(x => x.number = i);
this.days.forEach(x => x.weekDay = new Date(this.currentYear, this.currentMonth - 1, i).getDay());
this.days.forEach(x => x.name = '')
//try no.2
this.days[i].number = i;
this.days[i].weekDay = new Date(this.currentYear, this.currentMonth - 1, i).getDay());
this.days[i].name = ''
}
和
export class Day {
number: number;
weekDay: number;
name: string;
}
当你循环遍历this.numberOfDaysCurrentMonth
时,你需要做的是将日期添加到days数组中
ngOnInit() {
this.days = [];
for (let i = 0; i < this.numberOfDaysCurrentMonth; i++) {
let day = {
number: i,
weekDay: new Date(this.currentYear, this.currentMonth - 1, i).getDay(),
name: ''
}
this.days.push(day);
}
}
你使用this.days.forEach
的尝试没有做任何事情,因为它循环在days数组中的每个对象是空的。
同样,this.days[i]
确实是未定义的,因为数组是空的。
您的数组永远不会填充任何条目。 this.days.forEach将为数组中的每个项做一些事情,但由于数组为空,我什么都不做。
您应首先填充数组,然后在其上使用forEach。