问题标签 [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.
angular - 从反应形式更新 ngrx 实体
我有一个容器组件,它订阅 @ngrx/store 并呈现内部具有表单的组件列表。组件层次结构如下:
想法很简单。当表单的值发生变化时,内部组件会发出一个事件。外部组件使用来自事件的数据并将操作分派到商店,该商店更新实体并将更新的实体传递回内部组件。然后内部组件使用它来修补表单的值。
问题是每次表单字段更改时,元素都会失去焦点。如果有输入框或选择框或任何可能的表单控件,则在每次调度时元素都会失去焦点。
任何帮助表示赞赏!
angular - 角度 NGRX:无法根据 id 在 ngrx 实体中选择单个值
我正在尝试通过 Id 从实体状态中选择一个对象。下面是我的减速机。
下面是我的 index.ts 文件
我试图在传递一个 Id 时形成一个选择器,它将从实体返回值。
我查看了很多资源,但都不清楚如何通过传递 id 来选择对象。
angular - 我可以将对象及其方法存储在@ngrx 中吗
我想用 @ngrx/entity 的方法来存储对象。它会导致应用程序出现任何问题吗?(角度 2-7)
任务.class.ts:
有一个带有方法“完成”任务的类。我想通过@ngrx/entity 保存它。
任务.actions.ts:
有将 Mission 对象及其方法添加到 @ngrx/store 的操作
任务.reducer.ts:
当我使用 select() 从商店获取任务对象时,我可以调用它的“完成”方法。但我不确定这种方法将来是否会在应用程序中引起任何问题。
angular - Angular ngrx:具有副作用的防护
如果这是一些问题的重复,我最近很抱歉,但我找不到任何解决我的问题的方法。
我有警卫,现在我需要从调用 http 服务并将用户重定向到错误状态的副作用中捕获错误。尝试添加catchError
,但如果我从服务器端收到错误,我什至不会去那里。
守卫.ts
效果.ts
减速器.ts
angular - Angular ngrx:检查对象中是否存在字段
如果这是任何问题的重复,我很抱歉,但是,我找不到解决我的问题的方法。
我有一个选择器,它可以获取一个带有大嵌套的大对象。我需要从中返回一些价值。如何检查是否存在字段以防止崩溃?
B 计划 - 包装回归,try-catch
但我认为这不是一个好的选择。
angular - RxJs/Redux/Angular - 来自多个可观察流的动态排序函数
我有一个角度应用程序,它使用 NGRX 作为来自 API 的数据的状态存储。
应用程序中的主要数据是库存项目的集合。每个项目都具有键控到子集合的属性。(即,manufacturerId 被键入制造商的集合等。)我正在使用 ngrx-entity 以便能够索引集合。
我想以非规范化的方式在屏幕上的网格中显示这些数据(显示制造商名称而不是 id),然后允许它们按这些列中的任何一个进行排序。
这里的诀窍是,我需要按子集合中的数据进行排序,并且该子集合本身就是一个可观察的流。整个过程中唯一的“订阅”是在带有“异步”管道的 HTML 标记中——我计划保持这种状态。
我希望能够动态应用排序字段和排序方向,但我不太确定如何有效地做到这一点。我已经创建了这个stackblitz 示例,说明我现在是如何工作的。但是,该示例仅显示了 2 个子字段,并且我还有另外六个字段可供排序。代码可能会变得相当混乱。
另外,在某些时候,我也会为此添加某种过滤。
我考虑过修改 API 以返回非规范化的数据,但这似乎不太理想,因为存在数据完整性问题。
这是 stackblitz 现在的代码。我正在寻找一些反馈,以使其变得更好。
typescript - 在 @ngrx/store 中进行计算的记忆选择器
我的标准化 ngrx 商店如下所示:
这是一个非常基本的设置,其中一个购物车可以包含多个项目。我的选择器需要返回一个包含所有购物车的数组,其中包含包含其项目的数组,但还要计算项目是否有从各自购物车中退出的危险:
每次更新商品时,isCartOverfilled都会为商店中的每个商品运行。但是,isCartOverfill可能很昂贵,并且仅取决于购物车中的物品。当一个项目更新时,例如被添加到购物车,isCartOverfill应该只对里面的项目执行,即由购物车 id 记忆。
我如何实现这一目标?
我试过从一个购物车中选择物品:
这个选择器不会过度计算,但我需要所有的购物车,我不确定它是否可以使用选择器。
ngrx - NGRX:当我们必须从两个列表中表示数据时组合状态
实际示例:考虑展开/折叠列表。每个项目扩展另一个列表。
在 UI 上,列表应如下所示:
当用户点击 MainDomain[n] 时,会调用后端返回 SubDomain[] 的列表。他们两人之间没有任何联系。
似乎最复杂的部分是SubDomains是在单击时一个一个地加载而不是一次全部加载,并且可以像上面的示例一样同时打开多个 MainDomains 。此外,应该可以轻松地对 subDomainList 实体执行 CRUD 操作。
我尝试使用一个选择器,它通过 id 从状态中选择一个项目,但每次状态都被覆盖。
我最初的想法是创建一个单独的状态,在成功加载 SubDomainList[] 之后,我可以通过调度“ADD”操作来添加加载的 SubDomainList[],从而在 newList 中添加实体和单击的 MainDomainList 的 id当用户单击列表时的状态,获得如下内容:
然后我会以某种方式获取所有 newList 实体并在 UI 中将它们与 MainDomainList[n].id 的 id 匹配
我的方法是正确的还是有其他更好或更简单的解决方案来解决这个问题?
我对这个主题相当陌生,但我很头疼,试图弄清楚如何用ngrx/Entity实现它,但到目前为止失败了,尽管它应该是一个很常见的情况。任何帮助将非常感激。
angularjs - 如何使用 ngrx 实体选择器?
我将ngrx实体用于我的商店,我无法使用选择器选择商店实体。我按照本示例中的代码 https://github.com/angular-university/angular-ngrx-course/blob/master/src/app/courses/course.selectors.ts
在我的情况下,当我在商店中使用选择时,我得到的是商店对象而不是实体。
这是我的减速机:
angular - ngrx:为实体设置默认值
在ngrx实体中启动状态时如何为实体设置默认值?
马铃薯模型.ts
马铃薯减速器.ts
例如,我需要设置默认权重 0.2。