Angular 无法从可观察对象数组中返回筛选的可观察对象
我试图从可观察对象数组中返回可观察对象的过滤版本。我有两个服务,一个从服务器获取菜肴并返回一个可观察到的菜肴数组,另一个服务利用该服务获取被标记为最喜欢的菜肴,该服务还应返回一个数组或可观察到的菜肴 起初,我能够通过使用常规数组检索预期结果。请参见以下工作代码: 喜爱的服务:Angular 无法从可观察对象数组中返回筛选的可观察对象,angular,ionic-framework,rxjs,Angular,Ionic Framework,Rxjs,我试图从可观察对象数组中返回可观察对象的过滤版本。我有两个服务,一个从服务器获取菜肴并返回一个可观察到的菜肴数组,另一个服务利用该服务获取被标记为最喜欢的菜肴,该服务还应返回一个数组或可观察到的菜肴 起初,我能够通过使用常规数组检索预期结果。请参见以下工作代码: 喜爱的服务: favorites: Array<any>; getFavorites(): Observable<Dish[]> { return this.dishservice.getDishes(
favorites: Array<any>;
getFavorites(): Observable<Dish[]> {
return this.dishservice.getDishes().pipe(map(
dishes => dishes.filter(
dish => {
//returns true or false for every dish in dishes
this.favorites.some(el => el === dish.id)
}
)
));
}
getDishes(): Observable<Dish[]> {
return this.http.get<Dish[]>(baseURL + 'dishes')
.pipe(catchError(this.processHTTPMsgService.handleError));
}
getFavorites(): Observable<Dish[]> {
return this.dishservice.getDishes().pipe(map(
dishes => dishes.filter(
async dish => {
await this.storage.get("favorites").then(
result => {
//returns true or false for every dish in dishes
//console.log(result.some(el => el === dish.id));
return result.some(el => el === dish.id);
}
)
})
));
}
收藏夹:数组,但我不能完全确定
我错过了什么?试试这个
getFavorites(): Observable<Dish[]> {
return this.dishservice.getDishes().pipe(map(
dishes => {
let favorites=await this.storage.get("favorites");
return dishes.filter(
dish => {
favorites.some(el => el === dish.id)
})}
));
}
getFavorites():可观察{
返回此.dishservice.getDishs().pipe(映射(
菜肴=>{
let favorites=等待这个.storage.get(“favorites”);
回程过滤器(
菜肴=>{
收藏夹.some(el=>el==dish.id)
})}
));
}
好的,所以我设法跳出框框思考,找到了一个解决方案
我不需要修改收藏夹服务,只需要初始化收藏夹:数组;与存储。更少的代码和解决的问题
storage.get('favorites').then(favorites => {
if (favorites) {
console.log(favorites);
this.favorites = favorites;
}
else {
this.favorites = [];
}
});