ngrx выберите значение из хранилища - если значение равно нулю, заполните значение - PullRequest
0 голосов
/ 31 октября 2018

Угловой 5, NGRX 5

Когда мое приложение загружается впервые, у меня есть пустой список, который находится в моем магазине. Этот список используется несколькими компонентами в моем приложении.

Что я хотел бы сделать, это выбрать список из магазина:

this.terminals$ = this.store$.select(...);

Если список пуст, я хотел бы заполнить список, используя действие / эффект:

this.store$.dispatch(new TerminalActions.GetTerminals());

Возможно ли это сделать в select?

т.е. call select, если список пуст, вызвать эффект для заполнения списка?

Я хотел бы сделать это в select, чтобы каждый компонент, которым я пользуюсь этим списком, мог просто вызывать select, и не нужно было выполнять действие для заполнения списка.

1 Ответ

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

Вам может не понравиться этот ответ, но selector есть и должен оставаться чистым (вход, выход, никаких побочных эффектов). Поэтому селектор не должен отправлять действия.

Если вы не хотите повторять эту логику или отправлять эти действия, вы можете взглянуть на охрану маршрутизатора. См. https://toddmotto.com/preloading-ngrx-store-route-guards от Todd Motto для получения дополнительной информации. В зависимости от вашей реализации это может «заморозить» навигацию, пока данные не будут доступны в магазине.

...