我有以下问题。我想使用Angular中的异步管道订阅一个可观察的对象。但是管道中的数据可以源自不同的数据源,并且管道可以根据数据源看起来有所不同。
现在它的实现方式不起作用,因为我覆盖了第一个值,this.data$
因此源A永远不会被订阅。
是否可以根据过滤器“拆分”管道?
problem.component.ts:
// Data source A and logic A
this.data$ = this.service.context.pipe(
filter(context => context.flag === true),
switchMap(context => this.dataSourceA(context.id))
map(data => this.processDataA(data))
);
// Data source B and logic B
this.data$ = this.service.context.pipe(
filter(context => context.flag === false),
switchMap(context => this.dataSourceB(context.id))
map(data => this.processDataB(data))
);
problem.component.html
<pro-table [data]="data$ | async"></pro-table>
将逻辑转移到您的 switchMap()
this.data$ = this.service.context.pipe(
switchMap(context => context.flag
? this.dataSourceA(context.id).pipe(map(d => this.processDataA(d)))
: this.dataSourceB(context.id).pipe(map(d => this.processDataB(d)))
)
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句