NGXS селекторы с ограничениями - PullRequest
0 голосов
/ 14 апреля 2020

Недавно я написал много избыточного кода, чтобы обеспечить ограничения на состояние, выбранное в хранилище NGXS.

Например, мне может понадобиться токен, который хранится в сеансе. Технически возможно, что сеанс не инициализирован и токен недоступен. Но когда я запрашиваю один , я убежден, что - это сеанс (и если это предположение неверно, я могу просто выбросить ошибку). Поэтому я продолжаю объявлять такие функции, как getToken() ниже, чтобы эффективно получить необходимые данные:

  @Select(SessionState.session)
  session$: Observable<Session | null>;

  private getToken(): Observable<string> {
    return this.session$.pipe(
      switchMap(session => session
        ? of(session.tokenSeriesId)
        : throwError(new Error('You need to log in to perform this action.'))
      )
    );
  }

Есть ли более эффективный способ сделать это? В идеале я хотел бы объявить селектор SessionState.token, но я открыт для любых предложений, чтобы сделать этот код более пригодным для повторного использования.

...