Как выбрать из внутреннего состояния - PullRequest
0 голосов
/ 31 мая 2018

Я хочу выбрать внутреннюю часть состояния 'homepage_banner' И я получаю:

  TypeError: Cannot read property 'homepage_banner' of undefined
    at MapSubscriber.generalData [as project] (generalReducer.ts:37)
    at MapSubscriber._next (map.js:69)
    at MapSubscriber.next (Subscriber.js:83)
    at MapSubscriber._next (map.js:75)
    at MapSubscriber.next (Subscriber.js:83)
    at ReplaySubject._subscribe (ReplaySubject.js:46)
    at ReplaySubject._trySubscribe (Observable.js:171)
    at ReplaySubject._trySubscribe (Subject.js:87)
    at ReplaySubject.subscribe (Observable.js:159)
    at Observable._subscribe (Observable.js:229)

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

введите описание изображения здесь

это интерфейс модуля:

  export interface IAppGeneral {
     modules:{
        [key:string]: { 
            html:{
                data: {
                    [key:string]:string;
                }
            }
            css:{
                data: {
                    [key:string]:string;
                }
            }
        }

    }


}

и это редуктор:

  import {createSelector,createFeatureSelector} from '@ngrx/store';
import * as generalActions from './../actions/general.actions';

import {  IAppGeneral } from '../model/generalModel';


export interface IAppState {
    appGeneralData:  IAppGeneral ;
}

const initialState: IAppState = {
    appGeneralData:[]
};


export function appGeneralReducer(state = initialState, action:generalActions.Actions): IAppState {

    switch (action.type) {
          case generalActions.GET_GENERAL_APP_DATA_SUCCESS:{
                         // console.log('reducerGeneral',action.payload)
                          return Object.assign( {}, state, action.payload )

                //  return {...state,appGeneralData:action.payload}     
         }

        default:  {
            return state;

        }

   }

}


 export const  generalData = (state: IAppState) => state.appGeneralData['modules']['homepage_banner']
...