我有两个Observables
public readonly availableTags$ = this.tagSandbox.observeTags()
public readonly jobs$ = this.jobSandbox.observeJobsAfterFiltering()
我用作带有Input
管道的Angular组件的async
值。
我想将这两个可观察的对象转换成一个对象,并将其值“合并”到单个对象中。
{
availableTags: Tag[],
jobs: Job[]
}
但是,jobs$
的值仅应在availableTags$
发出其值之后才能获取。
有可能吗?
所有这些都是为了避免Input属性的“双重重载”。
答案 0 :(得分:1)
您可以为此使用cocatMap
(mergeMap
也可以使用),然后将第二个调用的响应以及第一个调用的结果映射到单个对象中:
availableTags$.pipe(
concatMap(availableTags => jobs$.pipe(
map(jobs => ({ availableTags, jobs })),
))
);