问题标签 [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.
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
;如何弥合这个差距并结合这两个选择器?
angular - 我正在尝试获取选择器值,将其存储在变量数组中,然后使用 ngrx 将此数组传递给 account.effect.ts 文件中的成功操作
account.effect.ts 文件
在上面的文件中,我已经导入了选择器,您可以通过 this.store.select(FromAcc.getSelectedAccInfo) 访问它。我想访问选择器值 FromAcc.getSelectedAccInfo 并添加一个我将从服务接收的值,然后将其发送到操作 AccountActions.loadUserInfoSuccess。我对ngrx很陌生。请告诉我我该怎么做。
ngrx - ngrx 选择器不返回数字,而是返回整个状态对象
我正在尝试使此功能选择器起作用。但是选择器不是返回一个数字而是返回整个状态对象(在我的例子中是 CounterState)
这是我的工作示例:https ://stackblitz.com/edit/angular-ivy-ctypd1?file=src%2Fapp%2Fcounter.selectors.ts
我在页面上得到以下输出:Current Count: [object Object]
我在控制台中得到以下输出。
我期待着1,2,3
我错过了什么?
问候,
angular - 如何在选择器中获得不同的状态或如何在选择器中使用选择器
我有以下选择器
现在我想使用我的另一个减速器的状态
使用以下选择器
有什么方法可以在“链接”选择器中获取所选语言或在选择器中使用选择器?
angular - `selector` 在页面刷新时返回值,`onInit` 值显示为未定义
我正在触发 的调度onInit
,shell component
但将值设为undefined
。如果我刷新页面,值会从selector
. 不知道如何解决这个问题。也没有收到任何错误..users
部分操作工作正常。
这是行动:
选择器:
外壳组件:
angular - NGRX - 如何在另一个选择器的地图中使用选择器?
我正在尝试创建一个选择器,该选择器返回一个对象列表,其中包含从另一个选择器添加的额外字段。这是我尝试使用的选择器:
但是,getUsersWithRoles
选择器返回的是一个 MemoizedSelectors 数组,而不是一个对象数组。如何在第一个选择器中使用该getUserWithRolesById
选择map
器?
其他一切都与 ngrx 的实体模式一样工作,但我将列出在上面的代码中调用的一些选择器:
rxjs - 为什么我使用有效的 withLatestFrom 操作从选择器中获取具有动作观察者属性的对象?
“res”值是一个对象,它不检索与选择器相关的数据,在其他地方工作,但实际上是获取这个对象。为什么会这样?
_isScalar: 假
ngrx - NGRX 选择器:另一个选择器中的工厂选择器,在 createSelector 方法中没有道具
使用工厂选择器模式const selectA = (id: number) => createSelector(...)
,我有一个实例,我想在另一个选择器(遍历 ID 数组)中重用此选择器,但我不知道在调用createSelector
.
所以我有一个选择器,每当我想获得组件 A 的一部分状态时,我都会使用它。
现在我想为数组中的每个项目获取组件 A 的列表。
问题是selectA
,它现在是一个工厂选择器,需要一个参数,但调用时我不知道它createSelector
。
我可以通过在工厂中创建另一个工厂来编译代码
const selectAFactory = () => selectA;
然后引用新工厂中的createSelector
但是,当然,现在发生的是选择器正在返回一个MemoizedSelector[]
.
这种模式似乎不应该这么复杂,人们不是以这种方式重用他们的选择器吗,我错过了什么?
angular - NGRX:如何从其他选择器中调用工厂选择器
由于 NGRX在版本 11 中弃用了带有 props 的选择器。使用属性的预期方法是创建工厂选择器,
- 你如何嵌套选择器,或者从另一个调用一个并在它们之间传递状态?
在更改之前,使用以下两个选择器
您可以使用以下命令从另一个选择器中调用其中一个
现在工厂选择器是处理属性时的预期格式,选择器现在如下所示
- 给定工厂选择器,有没有办法
selector2
从内部调用selector1
- 如果是这样,状态如何传递给嵌套选择器
例如
谢谢你。