Удержание 3 одинаковых объектов в магазине с чистым разделением.

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

Действие 1: LOAD_CANDIDATES



    I have an effect that invokes below service call

    public getCandidates(): Observable {
        const url = 'Candidates Url';
        return this.http.get(url);
    }

Мотор2:LOAD_MATCHED_CANDIDATES



    I have an effect that invokes below service call

    public getMatchingCandidates(conditions: any): Observable 
    {
        const url = 'Matched Candidates Url';
        return this.http.get(url);
    }

Действие 3: LOAD_ASSIGNED_CANDIDATES



    I have an effect that invokes below service call

    public getAssignedCandidates(id: number): Observable {
        const url = 'Assigned candidates url';
        return this.http.get(url);
    }

У меня есть эффекты успеха и неудачи для каждого из них.



    Candidate reducer :

    export const reducers = {
      search: fromSearch.reducer,
      candidates: fromCandidates.reducer,
      collection: fromCollection.reducer
    };

    Here is the injection of feature store to module

    StoreModule.forFeature('candidates', combineReducers(fromStore.reducers))

Как я могу иметь всех, совпавших и назначенных кандидатов одновременно в хранилище объектов с чистым разделением, которое указывает соответствующий тип объекта (то есть они сопоставляются, они назначаются)

1 ответ

Для этого вам нужно нарезать соответствующее состояние с несколькими свойствами и обработать его в редукторе. см. ниже код для примера реализации

объявить "кандидатов" типа "CandidateState"

export interface CandidateState {
  allcandidates: Array<Object>;
  matchedcandidates: Array<Object>;
  assignedcandidates: Array<Object>;
} 

Теперь составьте ваш кандидат редуктор, как показано ниже

export const candidateInitialState: fromState.CandidateState = {
  allcandidates: [],
  matchedcandidates: [],
  assignedcandidates: []
};

export const reducer = (
  state: fromState.CandidateState = candidateInitialState,
  action: fromAction.CandidateActions
): fromUserState.CandidateState => {
  switch (action.type) {
    case fromAction.LOAD_CANDIDATES: {
      return {
        ...state,
        allcandidates: action.allCandidatesData
      };
    }
    case fromAction.LOAD_MATCHED_CANDIDATES: {
      return {
        ...state,
        matchedcandidates: action.matchedCandidatesData
      };
    }
    case fromAction.LOAD_ASSIGNED_CANDIDATES: {
      return {
        ...state,
        assignedcandidates: action.assignedCandidatesData
      };
    }

    default:
      return state;
  }
};
Другие вопросы по тегам