Проблема с пакетом отменить откат, который появляется только в производстве - Angular - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь реализовать функциональность redux-undo в моем приложении , используя пакет redux-undo .Когда я запускаю его локально с ng serve, он работает нормально и без ошибок.Но когда я переключаюсь на производство, состояние кажется неопределенным.Это моя основная настройка магазина:

export interface State {
   elementState: {
   past: ElementState[];
   present: ElementState;
   future: ElementState[];
   _latestUnfiltered: ElementState;
   group: any;
   index: number;
   limit: number;
  }
}
export const reducers: ActionReducerMap<State> = {
   elementState: undoable(
   elementReducer,
   {
     limit: 10,
     undoType: ActionTypes.UNDO,
     redoType: ActionTypes.REDO,
     filter: includeAction([DO_STUFF])
    }
  ),
 };

Это ошибка:

ОШИБКА TypeError: "t.elementState is undefined"

IЯ понимаю, что этот вопрос довольно общий, но, честно говоря, я понятия не имею, в чем может быть причина ошибки, поскольку она работает локально.Может ли кто-нибудь дать мне какой-нибудь вклад и указать мне правильное направление?

решено

найденное здесь решение

определение инъекции Tokenдля редукторов / индекса:

export const reducerToken = new InjectionToken<ActionReducerMap<AppState>>('Registered Reducers');         
Object.assign(reducerToken, reducers);

определить фабрику getReducers (app.module):

export function getReducers() {
  return reducers;
}

при регистрации модулей в app.module: зарегистрировать reducerToken и предоставить его в разделе provders:

imports:[   
   ...
   ...
   StoreModule.forRoot(reducerToken)
],
 providers: [
{
   provide: reducerToken,
   useFactory: getReducers
}

1 Ответ

1 голос
/ 13 мая 2019

Я думаю, это связано с производством с использованием компиляции Ahead Of Time, потому что вы вызываете функцию undoable.

...