javascript — Эффект с использованием withLatestFrom назвал его, даже ofType (action) не был запущен

Эффект, использующий withLatestFrom, назвал его, даже ofType (action) не был запущен

Я использую Angular 5, ngrx / store. У меня есть эффект:

 @Effect() updateAfterChanges$ = this.actions$.pipe( ofType(ActionTypes.ChangesInItems), withLatestFrom( this.store.select(fromReducers.getItemsList) ), switchMap(([action, itemsList]: [ActionType, Items[]]) ={amp}gt; { return [new UpdateItems()] }) ) 

getItemsList выглядит так:

 export const getItemsList= createSelector( fromAnotherReducer.getAllItems, getCurerntItemdId, (allItems, itemId) ={amp}gt; collectItems(allItems, allItems[itemId].subItems) ); 

Этот селектор page1 на совершенно другой странице — page1 . Где у меня нет предметов вообще. Элементы загружаются с сервера, когда я открываю окно модели на page2 . Таким образом, на page1 я получаю сообщение об ошибке Cannot read property 'subItems' of undefined . Почему этот селектор даже не ofType(ActionTypes.ChangesInItems) после ofType(ActionTypes.ChangesInItems) ? Я должен добавить проверку в селекторе:

 Object.keys(allItems).length !== 0 ? collectItems(allItems, allItems[itemId].subItems) : [] 

Почему это происходит? Я не хочу добавлять проверки в каждый селектор, который использует динамически загружаемые данные. Я ожидаю, что эффект будет вызываться только в ответ на ofType(ActionTypes.ChangesInItems)

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector