过滤状态在哪里?

use*_*156 6 filter ngrx angular

新手问题:我有一个使用ngrx的angular2应用程序,我有一个服务,它将状态(可观察数组)返回给一个组件.

我的问题是,如果我想在组件中使用它的只读子集,我在哪里过滤状态?

我是在减速机,服务还是组件中进行的?

car*_*ant 3

一些指导可以在ngrx 示例应用程序中找到。有一种模式将选择器与减速器一起定义:

/**
 * Because the data structure is defined within the reducer it is optimal to
 * locate our selector functions at this level. If store is to be thought of
 * as a database, and reducers the tables, selectors can be considered the
 * queries into said database. Remember to keep your selectors small and
 * focused so they can be combined and composed to fit each particular
 * use-case.
 */
export function getBookEntities() {
  return (state$: Observable<BooksState>) => state$
    .select(s => s.entities);
};
Run Code Online (Sandbox Code Playgroud)

这些选择器在(智能)组件中使用来选择/过滤状态:

...
export class CollectionPage {

  books$: Observable<BooksInput>;

  constructor(store: Store<AppState>) {
    this.books$ = store.let(getBookCollection());
  }
}
Run Code Online (Sandbox Code Playgroud)

这种模式/机制可用于过滤组件或服务中的状态 - 无论哪种方式最适合您的架构。