Изменение магазина NGRX - PullRequest
0 голосов
/ 06 марта 2019

У меня начальное состояние

export const initialState: State = {
    activeStep: 0
};

И Редуктор

export function reducer(
    state: State = initialState,
    action: SignUpActions
): State {
    switch (action.type) {
        case SignUpActionType.SET_ACTIVE_STEP:
            return {
                ...state,
                activeStep: action.payload
            };
    }
}

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

@Effect()
    error$ = this.actions$.pipe(
        ofType<Error>(SignUpActionType.ERROR),
        switchMap((action) => this.responseErrorDialog(action.payload)),
        map((res) => {
            return new SetActiveStep(0);
        })
    );

И подписаться на эту часть Хранить в компоненте

this.store.pipe(select(getActiveStep)).subscribe((step: number) => {
            if (step) {
                ...do some stuff
            }
});

Проблема в том, что подписка в компоненте не реагирует на изменение переменной

Я думаю, потому что новая ценность государства равна предыдущему шагу, но мне нужно реагировать на каждое изменение магазина

Как я могу это сделать?

1 Ответ

0 голосов
/ 07 марта 2019

Активный шаг остается 0 - селектор не будет выполняться, если состояние останется таким же, потому что они запомнены - см. NgRx документы .

Алекс Окрушко рассказал об этой концепции и о том, как настроить ее в соответствии с вашими потребностями в прошлом году NgRx: селекторы более мощные, чем вы думаете

...