Как вызвать селектор ngrx внутри другого селектора (который принимает параметр для вычисления)
Я создал два селектора
Чтобы получить все сети -
export const getAllNetworks = createSelector(getState, state => state.networks);
получить устройства для каждой сети
createSelector(getAllNetworks, network => { const selectedNetwork = network.filter(net => net.id === networkId); return selectedNetwork[0]?.allDevices; });
Я хотел создать третий селектор, который использует первый селектор для получения сетей, а затем использует второй селектор для получения дополнительных данных.
export const something = createSelector(
getAllNetworks, (networks) => {
networks.map(
// How can I call the selector selectNetworkDevices by passing the network ID here and get the devices [ex: selectNetworkDevices(network.id)]
)
}
)
1 ответ
Вы можете использовать разные селекторы на основе других, например:
export const selectUsers = createSelector(getState, (state) => state.users);
export const selectAccounts = (accountId?: string) =>
createSelector(getState, (state) =>
accountId ? state.accounts[accountId] : {}
);
export const something = (accountId?: string) =>
createSelector(
selectUsers,
selectAccounts(accountId),
(usersData, accountsData) => {
// some logic
return accountId ? 'an account id was provided' : 'no-id'
}
)
В вашем компоненте вы можете вызвать этот селектор, предоставив параметр или нет:
ngOnInit(): void {
this.store.select(something()); // without parameter
this.store.select(something('anAccountId')); // with parameter
}
Подробнее здесь: ссылка