在Angular2 Typescript中没有.interval()的情况下将Array连接到Observable

时间:2016-06-28 21:56:59

标签: typescript angular rxjs rxjs5

有没有办法在没有“interval()”部分的情况下执行相同的功能?

我只想将数组连接到一个observable,然后只更新数组,并观察observable以观察该数组并作出反应。

如果这是一个很好的解决方案,有没有办法实现,并将.distinctUntilChanged()放入其中,以便在数据相同时它不会发出新值,那么这个“interval(10)”将不是瓶颈。

以下是Plunker:http://plnkr.co/edit/xlWSTz8gNfByTnT1REw5?p=preview

predict

1 个答案:

答案 0 :(得分:12)

  

" ...以及观察该阵列的观察者并做出反应"

我认为,每次数组更改时,observable都会发出新值

在你的情况下:

export class AppComponent {
  data = ["one", "two", "three"];
  data$: Rx.BehaviorSubject<Array<string>>; // or data$: Rx.Subject<Array<string>>
  latest$: Rx.Observable<Array<string>>;

  constructor() {}

  ngOnInit() {
    this.data$ = new Rx.BehaviorSubject<Array<string>>(this.data);

    this.latest$ = this.data$.map(data => data.map(
      d => "" + d + " is a number"
    ));
  }

  addToArray() {
    this.data.push('more numbers');
    this.data$.next(this.data);
  }

  resetArray() {
    this.data = ["one", "two", "three"];
    this.data$.next(this.data);
  }
}