首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个功能状态的一个选择器

多个功能状态的一个选择器
EN

Stack Overflow用户
提问于 2020-08-25 21:00:02
回答 1查看 392关注 0票数 1

我有2页,其中使用相同的减速器和状态。所以我想知道如何在组件中使用ngrx选择器,以便它们使用正确的功能状态,就像在组件中使用reducers一样。

page1.module.ts

代码语言:javascript
复制
@NgModule({
  declarations: [
    PageComponent
  ],
  imports: [
    StoreModule.forFeature('page-1', PageReducer)
  ]
})

PageComponent.ts

代码语言:javascript
复制
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

代码语言:javascript
复制
@NgModule({
  declarations: [
    PageComponent
  ],
  imports: [
    StoreModule.forFeature('page-2', PageReducer)
  ]
})

PageComponent.ts

代码语言:javascript
复制
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"
EN

回答 1

Stack Overflow用户

发布于 2020-08-25 21:45:31

@ngrx/store导入select

代码语言:javascript
复制
import { select, Store } from '@ngrx/store';

您忘记了在select方法中包装SelectUsers

代码语言:javascript
复制
this.users$ = this.store.pipe(select(SelectUsers));

this.users$将是一个可以通过async管道绑定到UI上的可观察对象

例如:

代码语言:javascript
复制
<div>{{ (users$ | async)?.name }}</div>

我假设你已经正确地连接了选择器,所以这应该可以工作。

您可以在一个选择器下组合多个状态

代码语言:javascript
复制
const getPageOneState = createFeatureSelector('page-1');
const getPageTwoState = createFeatureSelector('page-2');

export const SelectUser = createSelector(
    getPageOneState,
    getPageTwoState,
    (pageOneState, pageTwoState) => {
      return { ...whatever you want to return... }
    }
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63579418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档