在我的应用程序中,我根据所选的菜单项声明电影列表(热门电影、即将上映的电影…)。
我用一个
BehaviorSubject
在具有以下代码的服务中:
在我的组件中:
readonly movies$: Observable<Movie[]> = this.storeService.menuItemSelected$.pipe(
switchMap(menuItem => {
return menuItem === 'watchlist' ? this.movieService.getWatchlistMovies()
: this.movieService.getMoviesByCategory(menuItem);
})
);
为我服务:
private readonly menuItemSelectedSource = new BehaviorSubject<Category>('now_playing');
readonly menuItemSelected$ = this.menuItemSelectedSource.asObservable();
updateMenuSelection(menuItem: Category): void {
this.menuItemSelectedSource.next(menuItem);
}
现在我尝试做同样的事情,但使用menuItemSelected的信号而不是BehaviorSubject。
我做了以下更改:
menuItemSelected = signal<Category>('now_playing');
updateMenuSelection(menuItem: Category): void {
this.menuItemSelected.set(menuItem);
}
我的问题是,如何根据menuItemSelected信号声明我的电影$Observable?
readonly movies$: Observable<Movie[]> =
... ?