问题标签 [ngrx-entity]
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.
typescript - 替换集合中实体的最简洁方法
实体适配器支持使用“updateOne”方法调用更新集合。但是,当更新值的键不存在时,这会导致特定实体不被更新。请参阅代码示例。
但是,在内部,实体适配器使用Object.assign()
which while is nice 并不总是我想要的。我希望它基本上取代有问题的实体。
此外,如果所讨论的对象具有结构 A(见下文)。然后发生了一些任意的数据库操作并将更新的 JSON 返回到前端。reducer 最终会在表单中获得该信息。
我希望它简单地替换集合中的值,而不是试图通过内部调用“Object.assign()”来进行不良更新。或者,以某种方式将对象中的键设置为 null 将是有益的。
ngrx - ngrx 实体适配器 addAll 和嵌套状态
我有一个场景,我在用户页面上有一个用户列表。每个用户都有自己的应用列表,当用户点击时,会显示相应的应用列表。我想使用 ngrx 实体适配器,但首先我需要设计我的状态。一种选择是:
另一个是这样的:
由于用户页面之外没有应用程序,所以第一个选项对我来说更有意义,但是使用这种方法我有一个问题:如何使用addAll
适配器的方法?据我了解,如果我错了,请纠正我,addAll
接受一个表示项目列表的有效负载作为第一个参数,状态作为第二个参数,并以某种方式将它们合并在一起。你能举例说明如何使用适配器更新嵌套状态吗?或者,也许解决方案是选择第二种选择?谢谢。
ngrx - 用于嵌套属性的 ngrx 实体适配器
我为用户提供以下商店结构:
adapter.getSelectors()
仅适用于顶级键,而我想在 items 键中应用它。怎么可能呢?
谢谢。
ngrx - ngrx 通过域和 ui 数据创建嵌套状态
我正在使用ngrx实体,理想情况下我想实现以下状态结构:
这将允许我将我的数据存储与 UI 相关的东西分开。我似乎无法找到一种方法来做到这一点。目前我正在做的是这样的:
我有一个单独的商店模块。我为 userEntities 创建了一个 reducer,为 usersView 创建了一个 reducer。然后,ActionReducerMap
我创建了一个组合减速器,如下所示:
然后我导入StoreModule.forRoot(reducer)
我的商店模块。它有效,但结果状态的结构不是我想要的。有什么办法可以解决吗?
谢谢。
angular - 我可以将单个 EntityAdapter 用于同一 EntityState 的几个实例吗?
我有一个相同模型的 EntityStates 分配给单个状态的几个属性。我可以使用一个适配器来操作所有这些吗?它们具有相同的初始状态,但将包含具有不同状态的值。
然后我想使用这样的单个实体实例
angular - NGRX 如何处理在后端执行的排序
处理在后端执行的排序实体的最佳方法是什么?目前,当我使用适配器添加已排序的项目时,我的状态没有识别出某些变化,而项目仍与排序前相同,但它们在数组中的位置已更改。
已编辑
我从后端接收排序的元素,然后将它们添加到我当前的实体中,但是状态不识别位置变化,而实体的所有属性都相同,并将其视为没有任何变化。
我知道问题出在此处,
...state.entity1
因为我连接了与有效负载提供的相同的数组。只是位置发生了变化。
目前,我做了一个技巧,因为第二个参数提供了初始状态
angular - 在 ngrx 存储中使用实体组合选择器
我目前正在使用 ngrx 实体开发一个 ngrx 商店项目,我想在其中编写一些选择器,如下所示:
我想在选择器中使用selectProductById
选择selectCurrentProduct
器,如下所示:
语法是什么?这会导致我尝试使用selectCurrentProduct
选择器时出现编译错误:
类型“Observable<emoizedSelector<object, Product>>”不可分配给类型“Observable<Product>”
更新
感谢所有的链接和东西,但他们并没有真正解决我的问题。我正在寻找createSelector()
使用另一个选择器创建一个选择器,该选择器也是由createSelector()
. 请看我上面的伪代码。我正在尝试使用选择器来使用selectProductById
te selectProductById
。
angular7 - NGRX 无法读取实体参数
我正在尝试设置一个使用 NGRX 的应用程序。
当应该加载单个实体时,我无法访问返回的实体参数。
由于无法访问实体参数,我也无法以模式形式加载实体。
首先通过 data.service 从后端调用员工列表
数据.service.ts :
返回所有注册工程师。
列出所有工程师条目后,engineer-list.componenent.ts 添加 editEngineer 函数:
然后 loadEngineer$() 效果发生:
data.service 调用 getEngineerById():
它从 php mysql 请求中返回所选工程师的 json 响应:
下一步由带有 LOAD_ENGINEER_SUCCESS 的减速器执行
这里的问题是控制台记录了减速器的响应
undefined " - ID of the selected engineer object"
控制台记录“action.payload”返回时返回:
NGRX 也返回错误:
angular - 角度存储状态未定义
我有一个 Angular 7 应用程序,它使用 ngrx-store 和实体。存在一个问题,即我的商店状态的元素在我的效果中未定义。
这是效果的片段:
我的减速器包括以下内容:
初始状态是这样的:
reducer 是这样初始化的:
state 和 reducer 是这样注册的:
为什么storeState.accountSummaries
我的效果中我的未定义?据我所知,我已经正确注册并初始化了所有内容。
redux - 重置 - Redux 抛出一个无效的动作:未定义
我正在尝试基于注销重置我的 redux-store,但出现以下错误。寻找更好的建议来重置我的 redux-store 状态,以便在我发现将其设置为 undefined 的任何地方都会有所帮助,但在我的情况下它不起作用。
但得到这个例外
这是我的效果