首页 > 解决方案 > 如何在下一个 concatMap 中从 resposne 获取数据?

问题描述

有一个 rxjs 流,它通过 id 加载数据,然后从服务器输入:

  this.applicationSubjectRepository
            .getZagsDoc(appsubjectid)
            .pipe(
                indicate(this.loading$),
                observableTimestampResponse(),
                concatMap(() => this.applicationSubjectRepository.getZagsDocType()),
                switchMap((subjecttypes) =>
                    this.dialog
                        .open(DialogSubjectsSubdocumentsComponent, {
                            ...this.dialogConfig,
                            data: { mode: MODES.CREATE, subjecttypes, appsubjectid: appsubjectid },
                        })
                        .afterClosed()
                        .pipe(
                            filter(Boolean),
                            concatMap(() => this.applicationSubjectRepository.getByAppSubjectId(PASS_HERE)),
                        ),
                ),
            )
            .subscribe((subjectdocuments: any[]) => {
                this.subject.zagsdocs = subjectdocuments;
            });

如何将响应从.getZagsDoc(appsubjectid)togetByAppSubjectId(PASS_HERE)传递给PASS_HERE

标签: angularrxjs

解决方案


在您的代码中,您丢失了this.applicationSubjectRepository.getZagsDoc(appsubjectid)行中的值

concatMap(() => this.applicationSubjectRepository.getZagsDocType()),

你可以避免这种情况:

concatMap((zagsDoc) => this.applicationSubjectRepository.getZagsDocType().pipe(map(x => ([zagsDoc, x])))),

推荐阅读