问题标签 [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.

0 投票
2 回答
1451 浏览

angular - 如何使用@ngrx/store 和@ngrx/entity 嵌套延迟加载功能模块的状态?

我已经努力了 2 天来编写 featureA(“场景”)模块和嵌套的 featureB(“意图”)模块的状态。

这是我的状态所需的结构(结构 1):

我也很高兴(结构2):

虽然它不反映我的模块的结构。

结构 1 的问题是scenarios/reducers/index.ts暴露了 a ActionReducerMapscenarios/modules/intents/reducers/index.ts也暴露了 a ActionReducerMap,我不知道如何组合它们。由于类型冲突,我尝试的所有内容甚至都无法编译。

结构 2 的问题在于,由于在第一页加载时没有加载,并且应用程序的其他 reducer 正在执行它们的工作intents,因此状态的一部分一直被退出状态。IntentsModule

这是代码:

/scenarios/scenarios.module.ts

/scenarios/reducers/index.ts

/scenarios/modules/intents/intents.module

/scenarios/modules/intents/reducers/index.ts

0 投票
0 回答
585 浏览

angular - Ngrx 和 Angular 6 中带有 HttpClient 的解析器

我在 Angular 6 中使用 ngrx / (store, effects)。我在解析器解析其中一个路由变量时遇到了问题。这里是代码和解释

解析器

效果

减速器

服务

问题是,就像代码一样,resolves specialties 变量被解析为空([]),在组件中我将其设为空,一个空数组。但是,如果在服务中,我更改了 http 调用,对于被注释的行,解析器中变量的解析采用我返回的唯一正确值。

“解析器”在效果结束之前被解析,当它在服务中调用 http 的获取时。

我不明白的是,注释行(一切正常)返回一个与 http 调用内容相同的 observable。

有什么建议么?

0 投票
3 回答
2970 浏览

redux - 如何在ngrx / entity中的集合开头添加一个项目

我开始使用ngrx/entity包,我可以在其中通过适配器管理商店。addOne我想使用一种方法,但它会将项目添加到集合的末尾。我想在开头添加一个。你能帮我解决这个问题吗?如何在开头添加项目EntityAdapter

我如何创建实体适配器:

减速器看起来像这样:

0 投票
1 回答
549 浏览

angular - Ngrx 实体,如何定义动作以及如何正确命名具有效果的动作

我使用ngrx原理图生成了动作,它看起来像这样:

和这样的减速器:

我的问题是如何将其与效果结合起来并调用 REST API。

我应该生成如下操作:

LoadUsers - 哪个效果从 REST API 获取用户列表,如果该 api 调用具有成功状态,它会调度实际添加用户列表到存储对象的操作 LoadUsersSuccess?

或者它应该看起来不一样?

0 投票
2 回答
910 浏览

angular - 使用 Id 在 ngFor 循环中显示单个 ngrx 实体

我正在使用 ng6 和 NGRX 在视图中显示两个数据集。第一个数据集是完整的数据集。第二个数据集是第一个数据集的子集。

我需要在第二个数据集上使用 ngFor 循环,它提供一个id, 并在循环内使用id来显示第一个数据集中的单个实体。

组件.ts

组件.html

到目前为止,该视图正确显示了两个子集,名称和 ID(数字)

对应于 datasetOne 中的subData.id名称,我想显示名称而不是id

视图是这样的吗:

但我没有成功编写一种可以从中获取单个实体的方法datasetOne$

0 投票
1 回答
587 浏览

angular - @ngrx/entitiy 选择器在更改自定义状态时不会触发

我已经扩展了 @ngrx/entity 状态存储,以包含应从服务器检索的实体的加载值。

为了能够显示这个加载值,我使用了这个选择器:

这在第一次加载时效果很好。实体和加载值得到更新,选择器就像一个魅力。问题发生在我需要在网站上的“更新”按钮上。一旦来自服务器的实体状态与存储中已经存在的状态相同,选择器就会停止检索新的加载状态。使用 devtools 我可以看到状态以正确的方式更改(加载标志设置为 true 然后为 false)。

它似乎只是选择器。这是选择器仅在实体更改时触发的@ngrx/entities 的怪癖吗?还是我错过了什么?

编辑:减速机

0 投票
1 回答
74 浏览

google-cloud-firestore - NgRx + Entities + Firestore - 当我不想一次加载所有实体时如何处理它?

假设有任务和项目。有时用户想查看他/她的所有任务,有时还想查看属于某个项目的任务。当所有任务在开始时加载时,所有这些不同的视图可能只使用 NgRx 选择器从任务实体集合中获取必要的内容(同时 NgRx 效果 + Firestore stateChanges 将负责更新)。

但是,如果我不想在一开始就加载所有任务(因为它们太多了)我应该如何解决这个问题?

我应该只在任务实体集合中存储“当前视图的列表”并在用户切换到另一个视图时将其清空吗?

我应该加载当前所需的内容,将其附加到任务实体集合并使用选择器吗?但是,通过这种方式,我不确定如何处理更新(因为我猜想在所有 prevoius 查询上监听 stateChanges 可能有点矫枉过正)。

有没有更好的选择?

0 投票
3 回答
5940 浏览

angular - Angular & NGRX:使用 NGRX 实体过滤选择器

我正在尝试通过属性过滤掉有效负载数据。

下面是选择器

我在减速器中接收数据,但在运行时选择器中出现错误ERROR TypeError: Cannot read property 'map' of undefined

注意:我无法在任何地方找到任何关于在 NGRX 实体选择器中进行过滤的示例。

我们如何过滤 NGRX 实体中的选择器?

0 投票
1 回答
740 浏览

google-cloud-firestore - NGRX 实体效果 Firestore

我正在关注本教程https://www.concretepage.com/angular-2/ngrx/ngrx-entity-example。我现在有 Firestore 作为我的后端。我可以从 Firestore 中检索“LOAD_ALL_ARTICLES”。但是当我尝试监听“添加”操作时,我的代码会中断。请问有什么想法吗?!

0 投票
1 回答
732 浏览

angular - NGRX 实体:如何将 action.payload 分配给 UpsertOne 中的 state 属性

我有一个实体状态的减速器。action.payload.MessagesaveMessage.msg执行upsertOne操作时如何分配UPSERT_Message_SUCCESS

对应的动作调用签名如下: