angular - 一个选择器用于多种特征状态
问题描述
我有 2 个页面使用相同的减速器和状态。所以我想知道如何在组件中使用 ngrx 选择器,以便它们使用正确的功能状态,就像减速器在组件中所做的那样。
page1.module.ts
@NgModule({
declarations: [
PageComponent
],
imports: [
StoreModule.forFeature('page-1', PageReducer)
]
})
页面组件.ts
this.store.dispatch(PageActions.getUsers()); //Everything works fine, users are stored in "page-1" state
this.store.pipe(SelectUsers); // Doesn't work. I wanna select users from feature state "page-1"
page2.module.ts
@NgModule({
declarations: [
PageComponent
],
imports: [
StoreModule.forFeature('page-2', PageReducer)
]
})
页面组件.ts
this.store.dispatch(PageActions.getUsers()); //Everything works fine, users are stored in "page-2" state
this.store.pipe(SelectUsers); // Doesn't work. I wanna select users from feature state "page-2"
解决方案
select
从导入@ngrx/store
import { select, Store } from '@ngrx/store';
您忘记将 包装SelectUsers
在select
方法中。
this.users$ = this.store.pipe(select(SelectUsers));
this.users$
将是一个可以用async
管道绑定到 UI 上的 observable
例如
<div>{{ (users$ | async)?.name }}</div>
我假设你已经正确连接了选择器,所以这应该可以工作。
您可以在一个选择器下组合多个状态
const getPageOneState = createFeatureSelector('page-1');
const getPageTwoState = createFeatureSelector('page-2');
export const SelectUser = createSelector(
getPageOneState,
getPageTwoState,
(pageOneState, pageTwoState) => {
return { ...whatever you want to return... }
}
)
推荐阅读
- angular - Renderer2 避免了 Angular 组件的变化
- c++ - 用户名“白名单”检查
- python - 带有 load_workbook 的 BadZipFile
- scala - Scala 未来进入 Verx 未来
- git - 在 Git 中排除受控文件的更改
- react-native - Nanoid 不能用于 react-native
- javascript - Firebase 函数不返回正确的数据
- html - Html 视频作为背景
- javascript - 如何在 React with Hooks 中动态分配地图内的类
- python - 如何翻译多个单词 discord.py