问题标签 [angular-ngrx-data]

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 投票
0 回答
461 浏览

angular - NgRx/Redux 使用更通用的 reducer 减少重复代码

我正在构建一个应用程序,其中有不同的页面和电影列表。例如搜索页面(按搜索的电影)、演员的页面(按演员的电影)、流派的页面(按流派的电影)。问题是它们都共享相同的基本功能 - 按某些标准加载电影列表。加载某些内容后,我有一个用于存储电影实体的减速器。但问题是我必须为每个页面类型创建一个单独的 reducer 来保存相关的电影 id 来显示。

最初,我只是从头开始实现所有这些页面,同时复制大量代码 - 每个页面的单独操作、效果、reducer。现在我觉得它很丑陋,可以用更整洁的方式完成。

我的服务中已经有一个通用的queryMovies函数,它通过 options 参数查询电影。

您能建议任何组织此类代码的好方法吗?

编辑:

由于该帖子已被删除,我无法评论或回复(只能编辑)。所以我将此链接添加为编辑的一部分:https ://github.com/johnpapa/angular-ngrx-data

我认为这是一个很好的问题,并且希望看到更多关于 ngRx 的适当架构/模式的讨论。

0 投票
0 回答
20 浏览

angular-ngrx-data - 这个打字稿作业有什么作用?

我看到它为服务分配了一个对象文字,但[]分配不清楚,尤其是在表达式的右侧。

0 投票
0 回答
494 浏览

ngrx - angular-ngrx-data 创建自定义效果

我目前在我的应用程序中使用 ngrx 来管理状态。我正在考虑为简单的 CRUD 操作切换到 ngrx-data 并遇到了我的第一个问题。这是我目前的常规 ngrx 效果,我想知道如何使用 ngrx-data 重现它(基于 http 响应创建新操作):

有什么建议吗?

0 投票
1 回答
544 浏览

angular - 尽管 DELETE 出错,实体仍从缓存中删除

我正在使用 Angular 8@ngrx/data来管理我的实体。当我启动失败的删除操作(服务器返回 500)时,实体会从 ngrx 客户端缓存中删除,尽管它没有在服务器上被删除。

如何防止实体因错误而从缓存中删除?或者如何在出错时将(非)删除的实体重新添加回缓存?

0 投票
3 回答
2178 浏览

angular - ngrx/数据实体数据服务

试图理解这里的 ngrx/data 实体数据服务示例其中显示“创建实体数据服务”。在展示了该服务之后,文档继续展示如何在组件中使用 ngrx/data。我感兴趣的组件部分是这样的:

启动 HTTP 请求的文档状态getAll(),但我不确定该请求实际上是在哪里或如何发出的。在ngrx-data 存储库中。它声明用以下代码替换 heroService:

文档状态ngrx-data handles getting and saving our data for us。太好了,但我不知道获取数据的位置。我克隆了 repo,检查了finish分支,找不到到达端点的东西。

例如,用于获取所有英雄的服务http.get(${api}/heroes)getAll()但是被上面的代码替换了,那么这些调用发生在哪里?

我注意到EntityCollectionServiceBase有一个getAll()方法。但是该服务的配置在哪里注册相应的端点?我确定我在这里遗漏了一些非常简单的东西。

0 投票
0 回答
1407 浏览

angular - @ngrx/data 自定义 DataService - NullInjectorError: 没有字符串提供者

我正在尝试将新的自定义 DataService 添加到 @ngrx/data

我正在通过 custom-entity-data-service.ts 扩展 DefaultDataService 类,然后将其注册到 entityService 以将服务作为 DI

自定义实体数据service.ts

第 1 步 - 定义服务

app-store.module.ts << 封装所有ngrx/data东西的模块

第 2 步 - 在模块类中为实体注册服务

simple.component.ts

第 3 步 - 在组件中使用它

我认为错误是由于一些依赖注入,但无法弄清楚。任何建议将不胜感激。

谢谢

0 投票
1 回答
122 浏览

ngrx - Ngrx/data 似乎干扰了减速器

我对 Ngrx 还很陌生,所以我假设我做错了什么。看来,如果 Ngrx/data 处于活动状态,那么它会干扰状态历史记录,从而导致以未定义的初始状态调用减速器。

如果我在根中有多个状态,这很明显。一种状态的减速器会影响另一种状态。

我创建了一个小应用程序来演示这个问题。我将 EntityDataModule 添加到我的模块文件中,如下所示:

这是我的商店代码:

我在这里创建了一个 Stackblitz 应用程序:https ://stackblitz.com/edit/angular-bttdek

如果您单击任何按钮,它只会调度操作:

您将看到另一个状态被重置为初始状态。如果我从模块中删除 EntityDataModule.forRoot() ,它可以正常工作。因此,似乎只有激活 EntityDataModule 会导致商店出现问题。我浏览了商店,发现最新的未提交状态的索引是一对一的,导致以未定义的初始状态调用减速器。

EntityDataModule 处于活动状态

如果我像这样删除 EntityDataModule:

它有效: 禁用 EntityDataModule

我是否配置错误?

0 投票
1 回答
798 浏览

ngrx - ngrx/data-如何编写自定义减速器来处理返回多个实体的端点?

我目前正在尝试将我的 ngrx 存储转换为使用 ngrx/data 来处理我的实体。我遇到的一个棘手的障碍是处理返回多个实体数据的 API 端点。一个简单的例子——假设我有以下可以从我的 API 中检索到的模型:

我有以下端点:

/api/families是一个便利函数,它以以下格式返回所有父母和孩子:

过去,我families为我的 ngrx 存储创建了一个单独的条目,其中仅包含加载/加载参数,然后是一组LoadFamilies从服务器获取数据的操作。然后我将这些操作包含在我的父母和孩子存储减速器中,并适当地对它们采取行动。我现在要做的是将这个额外的 reducer 添加到我现有的 ngrx/data 控制实体中。关于如何解决这个问题的任何想法/示例代码?

0 投票
4 回答
3453 浏览

angular - ngrx-data 选择单个实体

我正在使用ngrx-data 插件(在ngrx 之上运行),并且我试图从商店中选择一个实体(ngrx 数据调用'缓存')。我发现您可以将单个实体添加到缓存中,但我找不到从商店中检索单个项目(基于 Id)的方法。

我必须为此编写自己的选择器吗?我假设ngrx-data会提供这样一个简单的操作

0 投票
2 回答
1042 浏览

ngrx - 使用带有 ngrx 数据的选择器

我们如何使用 ngrx 数据的选择器的记忆能力及其能力?

如何从商店内的ngrx数据“entityCache”状态创建选择器?

谢谢