rxjs中基于布尔可观测的条件可观测变换



我如何根据布尔可观测值编辑我的可观测值,任何时候这个布尔可观测将被更改,那么$ships可观测值将被转换。

areShipsExpanded$: Observable<boolean>;
ships$: Observable<Ship>;
this.ships$ = this.shipsDataSource.getData().pipe(
map(s => {
if(this.areShipsExpanded$) {
// do something with s
} else {
// do something else with s
}
return s;
})

当然在视图中将使用ships$ | async

上面的代码是不正确的,因为当this.areShipsExpanded$发生变化时,Observable不会再次转换。

areShipsExpanded$: Observable<boolean>;
ships$: Observable<Ship>;
this.ships$ = this.shipsDataSource.getData().pipe(
combineLatest(this.areShipsExpanded$),
map(([ships, expanded]) => {
if(expanded) {
// do something with ships
} else {
// do something else with ships
}
return ships;
})

最新更新