卸载后的Angular RxJS null值

时间:2017-07-19 09:10:15

标签: angular rxjs

我创建了一个发出数组的observable。 如果我在模板中使用它,例如:{{ ob | async }}它可以正常工作。

但是,如果我这样做:

<div *ngIf="is">{{ ob | async | json }}</div>
<div *ngIf="!is">{{ ob | async | json }}</div>

我第一次看到正确的JSON,但如果我翻转is,我会看到null

可观察的creation code

return Rx.Observable.create((observer: Rx.Observer<Array<GeoFireLocation>>) => {
  let locations: Array<GeoFireLocation> = [];

  geoQuery.on('key_entered', (key, location, distance) => {
    locations = this.insertIntoSortedArray({
      key, distance,
      coordinates: {
        latitude: location[0],
        longitude: location[1]
      }
    }, locations);
    observer.next(locations);
  });

  geoQuery.on('key_exited', (key) => {
    locations = locations.filter(location => location.key === key);
    observer.next(locations);
  });
}).finally(() => geoQuery.cancel());

1 个答案:

答案 0 :(得分:0)

这是因为每当我翻转finally变量时都会调用is

不知道如何清理observable,但至少我发现了这个问题。