Корневое состояние не включает данные из ngrx / data, по крайней мере, когда я его определяю. Позже он присутствует в глобальном состоянии.
На данный момент у меня есть «FilterService», в котором есть функции фильтра, которые возвращают наблюдаемые какого-либо вида.
пример
containerById(id: string): Observable<Container> {
return this.containerService.entities$.pipe(
map(data => data.find(item => item.id === id))
);
}
containersByCommunityId(id: string): Observable<Container[]> {
return this.containerService.entities$.pipe(
map(data => data.filter((items) => items.community_id === id)),
);
}
Я хотел бы написать селекторы для этого. Но поскольку хранилище не «подключено» к корневому состоянию, как мне написать селектор для этого?
Поток заключается в том, что я загружаю службы данных в AppComponent
. FilterService
содержит все функции фильтра, а также все ссылки на сервисы, например, private containerService: ContainerService
. В компоненте я просто передаю FilterService
и что-то вроде
this.forum$ = this.store.select(selectRouteId).pipe(
switchMap(id => this.filterService.forumById(id)),
);
this.container$ = this.forum$.pipe(
switchMap(forum => this.filterService.containerById(forum && forum.container_id))
);
Однако я считаю, что было бы более элегантно просто сослаться на private store: Store<State>
и this.store.select(containersById(forum && forum.container_id))
Но какЯ пишу селекторы для состояний ngrx / data? Как я уже писал, у меня есть глобальное состояние, в котором я подключаю другие состояния, но как мне подключить различные состояния сущности ngrx / data в корневое состояние? Или ... напишите селекторы для них.