но дальше в switchMap не передается action - пишет, что он типа "never"
@Effect() settingsDelete$: Observable<Action> = this.actions$.pipe(
ofType(fromSettingsActions.SettingsActionsTypes.SettingsDeleteKey),
withLatestFrom(this.store$),
switchMap(([action, store]) => {
const settings = clone(store.settings);
if (settings.hasOwnProperty(action.key)) { // error: Property 'key' does not exist on type 'never'
delete settings[action.key];
}
return this.settingsDataService.updateSettings(settings)
.pipe(
map(data => new fromSettingsActions.SettingsUpdateSuccessAction(data)),
catchError(error => of(new fromSettingsActions.SettingsUpdateFailureAction(error)))
);
})
);
Использование состояния стора в эффектах является плохой практикой. У эффекта может быть свое состояние, конфиг на этапе запуска, и ему могут приходить необходимые данные в action. Больше он ни с чем взаимодействовать не должен. withLatestFrom<Action, [Action, Store]> или switchMap(([action, store]: [Action, Store]) => ...)
Обсуждают сегодня