我创建了一个发出数组的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());
答案 0 :(得分:0)
这是因为每当我翻转finally
变量时都会调用is
。
不知道如何清理observable,但至少我发现了这个问题。