Селектор RXJS для ожидания всех записей, доступных в коллекции карты состояний

мы используем NGRX с Angular. Состояние нашей функции похоже на

      export interface UIState {
  loading : boolean

}

export interface ReportState {
     data: any,
     uiState : UIState
}

export interface FeatureState {
    // reports is a map which stores the report state against the id.
    reports : {[key]: string}: ReportState

}

Загрузка каждого отчета через NGRX Effects, который вызывает внутренний метод https.

      this.store.dispatch(GetReportAction({id : report_id}))

После завершения действия Get Report Action мы заполняем указанное выше состояние в reducer.

      state.reports[action.payload.id] = action.payload.data;

У нас есть следующий селектор, который вернет состояние для данного идентификатора.

      export const featureState = createFeatureSelector<FeatureState>('state');
const getReportsById = (id: string) => createSelector(
  featureState,
  (state: FeatureState) => {
    return state.reportState[id].data;
  });

аналогично мы хотим создать еще один селектор, который будет принимать массив идентификаторов отчетов, и этот селектор должен вызываться только тогда, когда

  1. в функции reportState все значения заполняются для данного идентификатора.
      const getReportsByIds = (id: string[]) => createSelector(
  featureState,
  (state: FeatureState) => {
    // what should we write here so that it should wait for all ids to be populated in the state.reportState
    return ?
  });

Есть ли способ написать указанный выше селектор, который будет ждать, пока все записи будут заполнены на карте.

Заранее спасибо.

0 ответов

Другие вопросы по тегам