首页 > 解决方案 > 自定义 rxjs 商店的选择器功能

问题描述

我有这个选择器功能,它可以帮助我选择自定义商店的一部分,但只能选择一部分或整个商店。

  select<K>(mapFn: (state: T) => K): Observable<K> {
    return this.internalState$.asObservable().pipe(
      map((state: T) => mapFn(state)),
      distinctUntilChanged()
    );
  }

我像这样使用它

this.title$ = this.store.select((s) => s.title)

工作正常,但我遇到了需要两个状态的情况。我像这样解决了它, this.store.select((s) => s).pipe(map((m) => ({ date: m.date, zone: m.zone })))或者使用我需要的属性或使用带有所选状态的 combineLatest 选择整个商店并在下一个管道中。

有没有办法创建一个选择器来选择商店的属性?我以前用过Pick<T>,但我不知道如何在这里应用它。

标签: angulartypescriptrxjs

解决方案


.select((s) => s)自己不做任何事情。

相反,您应该这样做:

this.store.select(s => ({ date: s.date, zone: s.zone })).pipe(

)

推荐阅读