Селектор 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;
});
аналогично мы хотим создать еще один селектор, который будет принимать массив идентификаторов отчетов, и этот селектор должен вызываться только тогда, когда
- в функции 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 ?
});
Есть ли способ написать указанный выше селектор, который будет ждать, пока все записи будут заполнены на карте.
Заранее спасибо.