我的TS类中有一个字段:currentMonth: Month;
和ngOnInit()
方法,用于发出GET请求并初始化此字段:
ngOnInit() {
this.dataService.getAllMonth(this.currentYear).subscribe(data => {
// setting current month
this.currentMonth = data.find(function (m) {
return m.numberInYear === currentDate.getMonth() + 1;
});
获得当月后,我想为它创造天数并展示其中一些。我是这样做的:
1)在ngOnInit()
this.generateDaysForCurrentMonth(this.currentMonth);
2)方法:
private generateDaysForCurrentMonth(mon: Month) {
let days = new Array<Day>();
for(var i = 0; i < mon.numberOfDays; i++) {
days[i] = new Day(i, mon.name, mon.year);
}
this.currentMonth.days = days;
}
3)方法,返回n
天:
private getPartOfMonth(from: number, to: number): Array<Day>{
return this.currentMonth.days.slice(from, to);
}
4)显示例如7天:
<div *ngFor="let day of getPartOfMonth(0, 7)">
<td >{{day.numberInMonth}}</td>
</div>
当我转到页面时,出现错误:ERROR TypeError: Cannot read property 'days' of undefined
在这一行:
return this.currentMonth.days.slice(from, to);
类似的事情发生在这里:
<div *ngFor="let m of months" >
<button (click)="loadMonth(m.name)" mat-raised-button >{{month.name}}</button>
</div>
month.name
- 显示正确,但在方法中它通过&#34; undefined&#34;
此代码有什么问题?
答案 0 :(得分:0)
使用安全导航操作员。 {{currentMonth?.name}}
。当currentMonth为null或未定义时,它将返回null并且在尝试访问currentMonth属性时不会抛出错误。