Angular ngOnInit, как использовать результат подписки для другого вызова подписки / бэкенда? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть этот ngOnInit. первая подписка работает хорошо и приносит ценность. Второй вызывает backend, получает ответ (ненулевой объект), но он не устанавливает this.taxas со значением отклика (да, тип правильный, и я вижу ответ на Postman). Я думаю, это может быть проблемой, потому что я вызываю множественные подписки на ngOnInit, но у меня нет идей, как это исправить. У кого-нибудь есть идеи?

  ngOnInit() {

    this.sharedService.getMonthValueObservable().subscribe(x => {
      this.monthValue = x;
    });

    this.simuladorGvService.obterTaxasRecebaRapido(this.monthValue).subscribe(
      response => {
        this.taxas = response;
    });

    console.log(this.monthValue);
    console.log(this.taxas);

  }

1 Ответ

1 голос
/ 16 апреля 2020

это switchMap вариант использования:

import { switchMap } from 'rxjs/operators';

...

this.sharedService.getMonthValueObservable().pipe(
  switchMap(x => {
    this.monthValue = x;
    return this.simuladorGvService.obterTaxasRecebaRapido(x)
  })
).subscribe(response => {
  this.taxas = response;
  // log in subscribe, not set till it finishes executing.
  console.log(this.monthValue);
  console.log(this.taxas);
});
...