角度遍历具有多个ID的帖子

时间:2019-05-25 23:12:40

标签: angular rest http

我想遍历帖子的GET请求并从收藏夹ID数组中获取收藏夹帖子

我已经尝试过以下代码,但是我不知道这是最好的方法

data.service.ts

getPosts(): Observable<Post[]> {
    return this.http.get<Post[]>(this.postsUrl);
  }

我想通过他们喜欢的帖子从喜欢的帖子数组中获取所有帖子 组件

 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);
      });
    });
  }

1 个答案:

答案 0 :(得分:2)

您将要在此处使用map运算符在订阅之前映射您的帖子:

this.serverService.getPosts().pipe(
      map(posts => posts.filter(post => this.favoriteIds.includes(post.id)))
).subscribe(data => this.posts = data)

您要做的另一件事是摆脱getPosts()方法,仅将本地Observable分配与shareReplay(1)运算符一起使用:

getPosts$ = this.http.get<Post[]>(this.postsUrl).pipe(
      shareReplay(1)
)

这将防止您每次尝试获取收藏夹时都向服务器发出新呼叫。