Объедините две наблюдаемые, чтобы получить значение двух разных Dto

У меня есть два observables, каждый из которых имеет значение Dto:

this.about.aboutHeInfo().subscribe((heInfo: HemDto) => {
        this.uiUtils.openDialogResizable({
          hem: heInfo
        }, true, AboutComponent).subscribe();
      });

this.about.aboutPeInfo().subscribe((peInfo: PeoDto) => {
        this.uiUtils.openDialogResizable({
          peo: peInfo
        }, true, AboutComponent).subscribe();
      });

Проблема в том, что при создании обоих наблюдаемых открывается два экрана, потому что каждая функция создает apenDialog, как я могу объединить два наблюдаемых и открыть одно диалоговое окно?

Это слияние, которое я тестирую:

const ob1 = this.about.aboutInfo().subscribe((heInfo: HemDto) => {
        this.heInfo= back;
      });

      const ob2 = this.about.aboutQoInfo().subscribe((peInfo: PeoDto) => {
          this.peInfo= people;
        });

forkJoin([ob1, ob2]).subscribe(() => {
        this.uiUtils.openDialogResizable({
          back: this.heInfo,
          people: this.peInfo
        }, true, AboutComponent).subscribe();
      });

person sinfryd    schedule 17.02.2021    source источник
comment
проверьте stackoverflow.com/questions/53419090/   -  person Louay Alosh    schedule 17.02.2021
comment
Я уже пробовал с zip, но в этом случае я не могу воспроизвести его для Dto, и он не работает   -  person sinfryd    schedule 17.02.2021
comment
Вы пробовали использовать merge reactivex.io/documentation/operators/merge.html   -  person Louay Alosh    schedule 17.02.2021
comment
Я пробовал использовать merge, combineLatest и forkJoin, но не могу воспроизвести его ни с одним из них, чтобы получить информацию от обоих Dto. Я не знаю, нужно ли вам использовать другие, поскольку это Angular 11. Вы знаете, как это сделать в таком случае?   -  person sinfryd    schedule 17.02.2021
comment
Можете ли вы опубликовать код, который вы пробовали, в коде? (добавьте его к самому вопросу, чтобы мы могли помочь)   -  person Louay Alosh    schedule 17.02.2021
comment
Прикрепляю последний, который пробовал с forkJoin   -  person sinfryd    schedule 17.02.2021


Ответы (1)


Вы не должны использовать подписку перед merge функцией, merge принимает наблюдаемое, а не то, что возвращает subscribe

Пример

const ob1 = this.about.aboutInfo()

const ob2 = this.about.aboutQoInfo()

forkJoin([ob1, ob2]).subscribe(([dto1, dto2]) => {
  ...
});
person Louay Alosh    schedule 17.02.2021