问题标签 [ngrx-selectors]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
706 浏览

angular - 结合 MemoizedSelector 和普通选择器组成 ngrx 选择器

我有一个正在慢慢迁移到新ngrx语法的大型项目。我们有许多选择器,它们是这样的普通函数:

新的选择器使用以下代码编写createSelector

这两个都使用相同的状态形状,但是我如何结合起来创建一个新的选择器,将这两者与createSelector

我知道我可以在组件代码中使用管道来执行此操作:

但这不可重用,我需要完成它createSelector以避免在多个组件中重复此操作。如果appDetailsSelector是用它创建的,createSelector它看起来像这样:

但是这个Argument of type 'MemoizedSelector<AppState, UserConfig, DefaultProjectorFn<UserConfig>>' is not assignable to parameter of type 'SelectorWithProps<Observable<AppState>, unknown, UserConfig>'.   Types of parameters 'state' and 'state' are incompatible.     Type 'Observable<AppState>' is missing the following properties from type 'AppState'...

我可以看到旧式选择器采用Observable<AppState>而新式选择器采用AppState;如何弥合这个差距并结合这两个选择器?

0 投票
1 回答
27 浏览

angular - 我正在尝试获取选择器值,将其存储在变量数组中,然后使用 ngrx 将此数组传递给 account.effect.ts 文件中的成功操作

account.effect.ts 文件

在上面的文件中,我已经导入了选择器,您可以通过 this.store.select(FromAcc.getSelectedAccInfo) 访问它。我想访问选择器值 FromAcc.getSelectedAccInfo 并添加一个我将从服务接收的值,然后将其发送到操作 AccountActions.loadUserInfoSuccess。我对ngrx很陌生。请告诉我我该怎么做。

0 投票
1 回答
563 浏览

angular - NGRX createSelector 对象在使用过滤器创建特殊选择器时获得中间线(更新至 NGRX 2021)

大家好,我正在创建一个选择器来过滤商店中的一些想法,但是当我在选择器上实现它时,它会在对象上创建一条线。

选择器工作正常,但我看到中间线好像不是 100% 好。

我该如何解决?谢谢你的帮助!

产品选择器.ts

从家庭组件

所有使用 Ngrx && ngrx 创建的实体都更新到最新版本 2021。

当我的鼠标在 createSelector 上显示该消息时

记住它可以工作,但是这条线感觉有些不对劲。

一张小图

在此处输入图像描述

0 投票
1 回答
108 浏览

ngrx - ngrx 选择器不返回数字,而是返回整个状态对象

我正在尝试使此功能选择器起作用。但是选择器不是返回一个数字而是返回整个状态对象(在我的例子中是 CounterState)

这是我的工作示例:https ://stackblitz.com/edit/angular-ivy-ctypd1?file=src%2Fapp%2Fcounter.selectors.ts

我在页面上得到以下输出:Current Count: [object Object]

我在控制台中得到以下输出。

我期待着1,2,3我错过了什么?

问候,

0 投票
1 回答
32 浏览

angular - 如何在选择器中获得不同的状态或如何在选择器中使用选择器

我有以下选择器

现在我想使用我的另一个减速器的状态

使用以下选择器

有什么方法可以在“链接”选择器中获取所选语言或在选择器中使用选择器?

0 投票
1 回答
35 浏览

angular - `selector` 在页面刷新时返回值,`onInit` 值显示为未定义

我正在触发 的调度onInitshell component但将值设为undefined。如果我刷新页面,值会从selector. 不知道如何解决这个问题。也没有收到任何错误..users部分操作工作正常。

这是行动:

选择器:

外壳组件:

0 投票
0 回答
89 浏览

angular - NGRX - 如何在另一个选择器的地图中使用选择器?

我正在尝试创建一个选择器,该选择器返回一个对象列表,其中包含从另一个选择器添加的额外字段。这是我尝试使用的选择器:

但是,getUsersWithRoles选择器返回的是一个 MemoizedSelectors 数组,而不是一个对象数组。如何在第一个选择器中使用该getUserWithRolesById选择map器?

其他一切都与 ngrx 的实体模式一样工作,但我将列出在上面的代码中调用的一些选择器:

0 投票
1 回答
50 浏览

rxjs - 为什么我使用有效的 withLatestFrom 操作从选择器中获取具有动作观察者属性的对象?

“res”值是一个对象,它不检索与选择器相关的数据,在其他地方工作,但实际上是获取这个对象。为什么会这样?

_isScalar: 假

0 投票
1 回答
127 浏览

ngrx - NGRX 选择器:另一个选择器中的工厂选择器,在 createSelector 方法中没有道具

使用工厂选择器模式const selectA = (id: number) => createSelector(...),我有一个实例,我想在另一个选择器(遍历 ID 数组)中重用此选择器,但我不知道在调用createSelector.

所以我有一个选择器,每当我想获得组件 A 的一部分状态时,我都会使用它。

现在我想为数组中的每个项目获取组件 A 的列表。

问题是selectA,它现在是一个工厂选择器,需要一个参数,但调用时我不知道它createSelector

我可以通过在工厂中创建另一个工厂来编译代码 const selectAFactory = () => selectA;

然后引用新工厂中的createSelector

但是,当然,现在发生的是选择器正在返回一个MemoizedSelector[].

这种模式似乎不应该这么复杂,人们不是以这种方式重用他们的选择器吗,我错过了什么?

0 投票
1 回答
35 浏览

angular - NGRX:如何从其他选择器中调用工厂选择器

由于 NGRX在版本 11 中弃用了带有 props 的选择器。使用属性的预期方法是创建工厂选择器,

  • 你如何嵌套选择器,或者从另一个调用一个并在它们之间传递状态?

在更改之前,使用以下两个选择器

您可以使用以下命令从另一个选择器中调用其中一个

现在工厂选择器是处理属性时的预期格式,选择器现在如下所示

  • 给定工厂选择器,有没有办法selector2从内部调用selector1
  • 如果是这样,状态如何传递给嵌套选择器

例如

谢谢你。