【发布时间】:2019-12-23 16:03:56
【问题描述】:
我有以下问题。我想使用 Angular 中的异步管道订阅 observable。但是管道中的数据可能来自不同的数据源,并且管道的外观可能因数据源而异。
现在它的实现方式不起作用,因为我覆盖了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>
【问题讨论】:
-
是什么阻止你使用
if else语句
标签: javascript angular typescript rxjs