【发布时间】:2017-12-29 18:40:11
【问题描述】:
我有一个问题,我想在数据来自服务器后将数据接收到我的属性组件中。
我在服务中做了这样的事情:
private events: Event[] = [];
eventChanged = new Subject<any>(); // Edit: added an observable
constructor(private http: HttpClient) {
this.http.get<Event[]>(this.baseUrl)
.subscribe(events => this.events = events);
this.eventChanged.next(this.events.slice()); //Edit: added an information to subscribers that events list changed
}
getEvents(): Observable<Event[]> {
return this.eventChanged.asObservable();
} // Edit: now I use this method to enables subscribers to observable
/* I don't use that method after Edit
showAllEvents(): Event[] {
return [...this.events];
}
*/
然后我像这样在我的组件中使用方法showAllEvents():
private events: Event[] = [];
private calendarEvents: CalendarEvent[] = [];
subscription: Subscription; // Edit: Added a Subscription
getInterestedEvents() {
// this.events = this.el.showAllEvents(); <-- I changed it into observable
this.subscription = this.el.getEvents()
.subscribe(
(events) => {
this.events = events;
});
this.events.forEach(eachEvent => {
let calendarEvent: CalendarEvent = {
start: subDays(startOfDay(new Date()), 1),
end: addDays(new Date(), 1),
title: eachEvent.name,
color: colors.red
}
this.calendarEvents.push(calendarEvent);
})
}
我不知道如何让this.events 等待来自服务的数据。有任何想法吗?每页看起来都不一样,现在我觉得自己像个傻瓜。
编辑
我订阅了并且可以观察到,但this.el.getEvents().subscribe... 仍然没有在我的组件中返回任何数据。
【问题讨论】:
标签: javascript angular typescript angular2-services