Обработка состояния формы с помощью NGRX / @Effects

У меня есть форма, и при отправке я отправляю действие, которое улавливается эффектом. Затем эффект вызывает http-вызов. Мне интересно, как после завершения / неудачи этого действия я бы сделал следующее:

  • показать сообщение об успешном завершении действия
  • сбросить все поля, готовые к следующему использованию формы
  • показать ошибку на обратной стороне действия не удалось

Я понимаю, что могу повторно отправить действие, чтобы заполнить магазин несколькими флагами success, error и т. Д. Однако сброс формы, вероятно, будет выполняться путем вызова функции. Можно ли подписаться на магазин и вызвать соответствующую reset функцию в дочернем элементе? Это похоже на то, как если бы я хотел, чтобы компоненты могли слышать действия, как это могут делать эффекты.


person Thomas Maddocks    schedule 16.03.2017    source источник


Ответы (1)


Если ваш эффект-отдых не влияет на магазин, а только должен отображать уведомление, я бы сказал, что есть два способа:

1) Добавьте Actions в свой компонент, как вы сами предложили:

class SomeComponent {
    constructor(actions: Actions) {
        actions.ofType(SOME_EVENT)
            .do(myThing)
            .takeUntil(componentIsDestroyed)
            .subscribe();
    }
}

2) Или вообще не переходите к эффектам и действиям, а просто вызовите простой сервис-метод:

class SomeComponent {
    constructor(myService: CoolService) {
    }

    onClick(): void {
        mySevice.makeRequest()
            .do(myThing)
            .subscribe();
    }
}
person olsn    schedule 16.03.2017