【问题标题】:Merge two observables to get the value of two different Dto合并两个 observable 得到两个不同 Dto 的值
【发布时间】:2021-05-20 06:29:27
【问题描述】:

我有两个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();
      });

【问题讨论】:

  • 我已经尝试过 zip 但在这种情况下我无法为 Dto 复制它并且它不起作用
  • 我尝试过使用mergecombineLatestforkJoin,但我无法使用它们中的任何一个复制它以从Dto 获取信息。我不知道您是否必须使用其他人,因为它是Angular 11。你知道在这种情况下该怎么做吗?
  • 你能把你试过的代码贴在代码里吗? (将其添加到问题本身以便我们提供帮助)

标签: rxjs angular11


【解决方案1】:

您不应该在 merge 函数之前使用 subscribe,merge 采取 observable 而不是 subscribe 返回的内容

例子

const ob1 = this.about.aboutInfo()

const ob2 = this.about.aboutQoInfo()

forkJoin([ob1, ob2]).subscribe(([dto1, dto2]) => {
  ...
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-04
    • 2021-05-08
    • 2017-08-04
    • 1970-01-01
    • 2017-11-01
    • 2020-09-29
    • 2021-09-26
    • 1970-01-01
    相关资源
    最近更新 更多