Angular 2 HttpClient требует .subscribe - PullRequest
0 голосов
/ 02 июля 2018

Я передаю метод, который выглядит следующим образом:

add = (): Observable<MatDialogRef<W, any>> => {
  let obs$ = this.service.getNew$().pipe(map(result => {
    this.applyNewItemProperties(result);
    return this.openDialog(result);
  }));

  obs$.subscribe();

  return obs$;
}

getNew$() - это, по сути, вызов return HttpClient.get<T>.

Мой вопрос: это нормально? Мне не нужна подписка, кроме того факта, что без нее get не срабатывает. Мне нужно unsubscribe() где-нибудь? Я скучаю по лучшему шаблону?

1 Ответ

0 голосов
/ 02 июля 2018

Вам нужна где-то подписка, потому что без нее ваша наблюдаемая остается холодная . Наблюдаемые являются ленивыми, они не работают, пока кто-то не заботится об ответе (делая их горячими ). Так что да, все нормально (и ожидаемо), хотя я хотел бы спросить, почему ничто по цепочке не подписывается на obs$, учитывая, что вы его возвращаете.

Строго говоря, вам не нужно unsubscribe, поскольку оба эти метода должны завершать свои Observable. Вам нужно только , чтобы отписаться от рассылки , если наблюдаемое еще горячо, но вас больше не волнуют результаты.

...