Как писать селекторы для ngrx / data? - PullRequest
0 голосов
/ 23 октября 2019

Корневое состояние не включает данные из 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 в корневое состояние? Или ... напишите селекторы для них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...