Удержание 3 одинаковых объектов в магазине с чистым разделением. - PullRequest
0 голосов
/ 22 мая 2018

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

Action1: LOAD_CANDIDATES



    I have an effect that invokes below service call

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

Action2: 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 Ответ

0 голосов
/ 24 мая 2018

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

объявляет 'кандидатов' с типом "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;
  }
};
...