【发布时间】:2017-08-28 09:04:15
【问题描述】:
我正在使用for in 循环一个名为allMeetings 的会议对象列表。这个循环正在填充另一个名为allEvents 的列表,其中会议以外的对象最终会出现在该列表中。在该循环中,我试图获取会议对象的属性,但无法识别它们。我想知道如何解决或绕过它。
我的会议模式:
export class Meeting {
id: UUID;
date: Date;
description: string;
}
TS 文件:
循环用于makeEvents() 方法
...
import { Meeting } from '../models/meeting.model';
import { MeetingsService } from '../services/meetings.service';
...
export class SomeComponent implements OnInit {
allEvents: SpikesEvent[] = undefined;
allMeetings: Meeting[] = undefined;
constructor(private _meetingsService: MeetingsService) { }
ngOnInit() {
this.loadMeetings();
this.makeEvents();
}
loadMeetings(): void {
this._meetingsService.getAllMeetings().subscribe(
(allMeetings: Meeting[]) => {
this.allMeetings = allMeetings;
}
);
}
makeEvents(): void {
for (let meeting in this.allMeetings) {
this.allEvents.push({
start: startOfDay(meeting.date),
title: meeting.description,
color: colors.yellowsunflower,
type: "meeting",
id: meeting.id,
});
}
}
}
因此,会议的日期、描述和 ID 无法识别。
编辑 1:在 TS 文件中添加了构造函数。
编辑 2:我正在从 rethinkDB 检索我的数据,因此没有 JSON 文件,但这里有一个日志来证明会议对象实际上不是空的:
date: "Fri Feb 20 1993 00:00:00 GMT+00:00", description: "meeting about dummy data", id: "088c0baf-3c02-48b2-a072-65905fb0c0a7"
【问题讨论】:
-
makeEvents() 在 loadMeetings() 完成运行之前被调用。所以你在 makeEvents() 中没有 allMeetings 对象内的数据
-
@Amit Chigadani - 确实,在执行代码时我仍然需要考虑异步编程,但问题是我无法读取会议对象的属性。
-
@WouterVanherck 那是因为
meeting在makeEvents方法中是undefined。检查链接以找出原因。
标签: angular typescript properties for-in-loop