您可以在此处查看完整代码:https://mattlewis92.github.io/angular-calendar/#/async-events
我试图在Angular中创建一个日历,并且我正在使用模块角度日历,它正确地填充了我日历中的异步事件,问题是当我尝试填写不需要从API请求的事件:
导出接口CalendarEvent {
start: Date;
end?: Date;
title: string;
color: EventColor;
actions?: EventAction[];
allDay?: boolean;
cssClass?: string;
resizable?: {
beforeStart?: boolean;
afterEnd?: boolean;
};
draggable?: boolean;
}
界面电影{
id: number;
title: string;
release_date: string;
}
接口FilmEvent扩展了CalendarEvent {
film: Film;
}
events $:Observable;
this.events $ = this.http
.get('https://api.themoviedb.org/3/discover/movie', {search})
.map(res => res.json())
.map(({results}: {results: Film[]}) => {
return results.map((film: Film) => {
return {
title: film.title,
start: new Date(film.release_date),
color: colors.yellow,
film
};
});
});
正如您所见,当从API请求信息时,Observable数组事件$的更改会自动填充日历:
但问题是我无法操作事件$数组只是在数组中添加一个静态事件,如下所示:
title: "STATIC EVENT",
start: new Date(), ///TODAY
color: colors.yellow,
film
到目前为止,我尝试使用两个这样的http流响应, 我用JSON保存了一些Statics事件:
this.test3 = this.http .get(" adresssAPI1")
this.test4 = this.http .get(" STATICSEVENTSINJSON")
我尝试将它们合并为一个流,以便作为单个流进行处理
this.test5 = Rx.Observable.combineLatest(this.test3 this.test4)
this.events $ =
this.test5.map(({results}:{results:Film []})=> {
return results.map((film: Film) => {
return {
title: film.title,
start: new Date(film.release_date),
color: colors.yellow,
film
};
});
});
我很感激有任何想法要做到这一点,我是一个菜鸟,我不太了解如何操作一个Observable Array
答案 0 :(得分:0)
如果您想从2个json文件中获取数据并合并结果,那么您只需执行以下操作:
var one$ = this.http.get('url for first json');
var two$ = this.http.get('url for second json');
this.events$ = Observable.forkJoin(one$, two$);
运行:https://jsfiddle.net/ibrahimislam/r7dojscr/1
如果要提供内联数据,则可以执行以下操作:
this.events$ = Observable.from([{ data: { id: 1 } }]);