Угловой цикл через сообщения с несколькими идентификаторами - PullRequest
1 голос
/ 26 мая 2019

Я хочу просмотреть GET-запрос сообщений и получить избранные сообщения из массива избранных идентификаторов

Я пробовал код ниже, но я не знаю, лучший ли это способ

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 Ответ

2 голосов
/ 26 мая 2019

Здесь вы захотите использовать оператор map, чтобы отобразить ваши сообщения перед подпиской:

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

Еще одна вещь, которую вы захотите сделать, это избавиться от метода getPosts () и просто использовать локальное присваиваемое присваивание с оператором shareReplay (1):

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

Это предотвратит новый вызов на сервер каждый раз, когда вы пытаетесь получить избранное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...