У меня есть два свойства в модели состояния, и мне нужно событие для каждого из них отдельно, но когда оба изменяются одновременно, я получаю два события, и мне нужно только одно, что-то вроде ngxsOnChanges
Как реализовать ngxsOnChanges в компоненте
8 августа 2021 в 17:07
63
2
Ответы (2)
14 августа 2021 в 19:22
Вы можете объединить несколько селекторов с помощью декоратора @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
Вы можете найти их полезными: coderhelper.com/q/44004144/2436787 и coderhelper.com/q/66421744/2436787