我想遍历帖子的 GET 请求并从最喜欢的 id 数组中获取最喜欢的帖子
我试过下面的代码,但我不知道这是不是最好的方法
数据.服务.ts
getPosts(): Observable<Post[]> {
return this.http.get<Post[]>(this.postsUrl);
}
我想通过他们的 ID 从最喜欢的帖子数组中获取所有帖子 组件
getFavorites(): void {
this.serverService.getPosts().subscribe(posts => {
this.favoriteIds.forEach(element => {
let data = posts.filter(post => post.id === element);
this.posts = data;
console.log(this.posts);
});
});
}
最佳答案
您需要在此处使用 map
运算符在订阅之前映射您的帖子:
this.serverService.getPosts().pipe(
map(posts => posts.filter(post => this.favoriteIds.includes(post.id)))
).subscribe(data => this.posts = data)
您需要做的另一件事是摆脱您的 getPosts() 方法,只使用带有 shareReplay(1) 运算符的本地 Observable 赋值:
getPosts$ = this.http.get<Post[]>(this.postsUrl).pipe(
shareReplay(1)
)
这将防止您每次尝试获取收藏夹时都对服务器进行新调用。
关于通过具有多个 id 的帖子进行 Angular 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56309433/