Как реализовать ngxsOnChanges в компоненте

avatar
Yacov Barham
8 августа 2021 в 17:07
63
2
1

У меня есть два свойства в модели состояния, и мне нужно событие для каждого из них отдельно, но когда оба изменяются одновременно, я получаю два события, и мне нужно только одно, что-то вроде ngxsOnChanges

Источник
Richard.Davenport
9 августа 2021 в 14:12
0

Вы можете найти их полезными: coderhelper.com/q/44004144/2436787 и coderhelper.com/q/66421744/2436787

Ответы (2)

avatar
Amer
14 августа 2021 в 19:22
0

Вы можете объединить несколько селекторов с помощью декоратора @Selector, но позаботьтесь об опции селектора injectContainerState, которая по умолчанию отключена в NGXS v4 (лучше установить ее на false, если вы используете NGXS v3.x)

Затем вы можете подписаться на новый селектор в вашем компоненте.

 @Selector([ZooState, PreferencesState])
 static firstLocalPanda(state: string[], preferencesState: PreferencesStateModel) {
   return state.find(
     s => s.indexOf('panda') > -1 && s.indexOf(preferencesState.location)
   );
 }

 @Selector([ZooState.firstLocalPanda])
 static happyLocalPanda(panda: string) {
   return 'happy ' + panda;
 }

Чтобы узнать больше о объединении селекторов: https://www.ngxs.io/concepts/select#joining-selectors

avatar
Mateus Carniatto
10 августа 2021 в 15:15
0

Вы можете использовать селектор, чтобы объединить их оба, а затем вы сможете подписаться на этот селектор и использовать debounce.