【发布时间】:2021-07-20 10:51:16
【问题描述】:
我已经在网上想了好几个小时关于如何用另一个 BehaviorSubject 过滤一个 BehaviorSubject 并听说过 switchMap,所以我实现了它。它有效,但我想知道是否有更合适的方法。 TIA。
// results$:arrayOfObject and activeEntityFilter$:number are both BehaviorSubjects
results$ = this.flowService.searchAppResult$;
filteredResult$ = this.activeEntityFilter$.pipe(
switchMap((activeEntityFilter) =>
this.results$.pipe(
map((flows) => {
return flows.filter((flow: any) => {
return activeEntityFilter
? flow.initiator_id == activeEntityFilter
: true;
});
})
)
)
);
【问题讨论】:
-
这取决于你希望
filteredResult$observable 被触发的方式。使用switchMap的解决方案仅在将新值推送到activeEntityFilter$observable 时才会触发。在@NikhilWalvekar 使用combineLatest的解决方案中,filteredResult$将在任一源接收到新值时触发。
标签: angular filter rxjs observable subject