我遇到了一个问题,我无法让观察者返回我在其中运行的过滤集。我从Giftler(https://www.nativescript.org/blog/merry-and-bright-create-a-mobile-app-with-firebase-angular-2-and-nativescript)示例中完全复制了这个它在那里工作,但似乎不适合我..
这是与该问题相关的我的代码
这是数组信息
beers: BehaviorSubject<Array<Beer>> = new BehaviorSubject([]);
private _allBeers: Array<Beer> = [];
这是我获取本地啤酒信息的功能(最初使用 firebase 将数据加载到数组中)
getLocalBeerDetail(id: string): Observable<any> {
return new Observable((observer: any) => {
observer.next(
this._allBeers.filter(s => s.id === id)[0]
);
console.log("Here is the local query status of allBeers array: " + this._allBeers);
}).share();
}
这是调用上述函数并进行订阅的函数。
ngOnInit() {
this.sub = this.route.params.subscribe((params: any) => {
this.id = params['id'];
this.firebaseService.getLocalBeerDetail(this.id).subscribe((beer) => {
console.log("Here is the status of beer observable: " + beer);
this.ngZone.run(() => {
for (let prop in beer) {
if (prop === "id") {
this.id = beer[prop];
console.log("Here is the detail id:" + this.id);
}
if (prop === "name") {
this.name = beer[prop];
console.log("Here is the detail id:" + this.name);
}
}
});
});
});
}
不确定问题是什么,但这应该可以工作,基于使用 Giftler 示例。