我有一个组件,并尝试将一些道具分配给一个对象。试一试。我没有犯错,但是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;
}
答案 0 :(得分:4)
您需要做的是在this.numberOfDaysCurrentMonth
上循环时将天添加到天数组中。
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]
确实是未定义的,因为数组为空。
答案 1 :(得分:0)
您的数组永远不会充满任何条目。 this.days.forEach将为数组中的每个项目做某事,但是由于数组为空,所以我什么也没做。
您应该先填充数组,然后在其上使用forEach。