NGXS - Сделайте что-нибудь, когда отправлено действие - PullRequest
0 голосов
/ 23 сентября 2018

Допустим, у нас есть действие SyncUserData, которое возвращает наблюдаемое, которое прослушивает изменения из базы данных.Всякий раз, когда есть изменение, действие отправляет действие new PatchUserData(newData).

Действие SyncUserData отправляется (только один раз) из ngxsOnInit состояния.

В другой раздел (например, компонент), я хочу что-то делать всякий раз, когда отправляется действие PatchUserData.Примерно так:

this.store.onDispatch(PatchUserData).subscribe();

Я немного искал в источнике и не нашел ничего похожего на мой пример.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Альтернативой прямой подписке на состояние является использование потока действий NGXS для уведомления о том, когда определенное действие отправлено / выполнено, см. Документацию для обработчиков действий .

Отофициальный документ:

@Component({ ... })
export class CartComponent {
  constructor(private actions$: Actions) {}

  ngOnInit() {
    this.actions$.pipe(ofActionSuccessful(CartDelete)).subscribe(() => alert('Item deleted'));
  }
}
0 голосов
/ 23 сентября 2018

Вам не нужно подписываться на определенное событие в вашем случае, вы можете подписаться на userData в своем магазине и иметь самую последнюю версию, независимо от того, какое действие изменило его.Измените следующий образец в соответствии с вашими моделями данных и подпишитесь на наблюдаемые:

import { Select } from '@ngxs/store';

@Select(({ userData }: AppState) => userData)
  userData$!: Observable<UserData>;

Подробнее о выборе: https://ngxs.gitbook.io/ngxs/concepts/select

...