我可以操作Observable数组,使其在Angular 2中接收和处理静态数据

时间:2017-05-25 13:10:35

标签: angular events asynchronous observable

您可以在此处查看完整代码: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

1 个答案:

答案 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 } }]);