问题标签 [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 投票
1 回答
372 浏览

angular - Angular & NgRx-Data 更新 & 订阅问题

我正在使用 Angular 11 和 NgRx-Data 10.1.2。我正在使用智能组件/哑组件模式。

在我的“列表”视图中,当我选择一个项目时,我会路由到一个传递项目 ID 的详细信息页面。

在我的详细信息页面中,我订阅了实体服务 getByKey()

这是 SiteEntityService:

单击“编辑”时,我以模式打开编辑组件:

在 Edit 组件中,点击提交表单时:

更新后,如果我调查商店,我可以看到实体已正确更新,但是,在模式关闭后,尽管商店(和数据库)更新,但显示页面上的订阅不会更新。

那么我哪里错了?如何让显示页面刷新数据?

针对@Fiber 的回答进行了编辑:

它现在可以工作了,但是由于订阅返回了一个项目数组,这意味着我必须在数组中搜索正确的项目,这似乎并不理想。

0 投票
1 回答
167 浏览

angular - 使用@ngrx/data,您如何在自定义数据服务上形成从更新到实体的 JSON 补丁文档?

我的@ngrx/data 用例要求我通过扩展来构建自定义实体数据服务DefaultDataService<T>。我正在使用的 API 接受 JSON 补丁文档进行更新。EntityCollectionDataService<T>定义以下更新函数:

哪里有类型Update<T>的成员。我在这里面临的问题是,我无法仅使用实体更改字段的一部分来形成 JSON 补丁文档。我需要实体的未更改和更改状态。changesPartial<T>

我在这里可以看到的唯一解决方案是EntityChangeTracker通过EntityCollectionService我的实体访问,我只是对如何使用更改跟踪器有点困惑,因为它只是通过 EntityCollectionServicechangeState$字段的可观察的更改流。

有没有更简单的方法我在这里看不到?我还想只访问商店并拉取实体的当前状态,但我更喜欢使用乐观并发,所以在DefaultDataService我写的时候通过更新的副作用调用商店已经改变了。

0 投票
0 回答
58 浏览

angular - 如何在@ngrx/data 中对 EntityCollectionServiceBase 进行单元测试?如何测试@ngrx/data 服务?

我想测试我的 ngrx 数据服务:

到目前为止,我已经定义了以下测试类:

但我收到错误:

TypeError:无法解构“serviceElementsFactory.create(...)”的属性“dispatcher”,因为它未定义。

Karma 结果:TypeError:无法解构“serviceElementsFactory.create(...)”的属性“dispatcher”,因为它未定义。

如何正确修复我的测试?

0 投票
0 回答
35 浏览

angular - 如何以角度为json数据实现输入搜索和下拉过滤器

我正在尝试为 JSON 数据实现搜索过滤器和下拉过滤器。使用该数据我需要使用单独的搜索过滤器和下拉过滤器过滤我的表。只有我已经实现并且工作正常但卡在下拉过滤器中的搜索过滤器。[我创建的图像的 URL] [1]: [https://i.stack.imgur.com/UpNt5.png] [2]: https://i.stack.imgur.com/Zu32a.png

0 投票
1 回答
53 浏览

ngrx - Ngrx/effects 不能与 angular 2 异步工作

我是 Ngrx 的新手,我们在实施中遇到了困难,需要一些帮助

架构:当用户通过身份验证时,我们正在尝试填充存储,然后尝试重定向。

期望:效果应该被称为异步,在 ui 中我们必须做重定向

问题:重定向到主页仅在 ngrx/effect api 调用完成后才会发生。

0 投票
0 回答
88 浏览

angular - NGRX 数据 - 为 Module 提供多个 EntityCollectionReducerMethodsFactory 类

按照附加集合状态的文档,我已经能够使其仅适用于一个实体集合。在我正在构建的模块中,到目前为止我使用了三个实体集合。我不确定应该如何在模块中进行注入,但这就是我正在做的事情:

上述方法不起作用。我注意到的是最后一个提供者超过了前两个。例如,在上面的示例中,有效的注入服务是ExtendedUsersCollectionReducerMethodsFactory. 如果我像这样更改顺序:

那么有效的是ExtendedPharmaCollectionReducerMethodsFactory. 我的问题如下......

如何EntityCollectionReducerMethodsFactory为不同的实体集合提供不同的?

0 投票
0 回答
80 浏览

angular - Ngrx 数据附加集合状态不起作用

我正在尝试使用Ngrx 数据创建一个延迟加载的后期模块。目标是添加一个额外的收集状态,但它但不起作用。Post Persistence Result Handler 未触发。

我想实现延迟加载的 NGRX 数据和额外的收集状态,但我不知道该怎么做。最大的问题是如何实现具有附加集合状态的延迟加载 Ngrx 数据、延迟加载特性(模块)上的默认持久性结果处理程序和延迟加载特性上的实体集合缩减器方法

在此处输入图像描述

在此处输入图像描述

这甚至没有火

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
57 浏览

javascript - 可以将多个查询参数传递给@ngrx/data 上的getWithQuery() 方法吗?

这个 ngrx/data API有方法:

getWithQuery(queryParams: string | QueryParams, options?: EntityActionOptions): Observable<T[]>

要从数据源中检索数据,我们可以以简单的形式使用:

这很清楚,并且可以很好地返回数据子集。

现在,我们将如何在多个条件下使用相同的方法获取数据子集?

例如:

0 投票
0 回答
28 浏览

angular-ngrx-data - 为什么我的 ngrx 数据自定义 URL 不起作用?

app.module.ts:(可以从左边看到项目树) app.module.ts

profile.module.ts: profile.module.ts

账户数据服务: account-data.service.ts

测试请求: profile.component.ts

chrome 工具: 您可以在左侧的错误中看到它仍然尝试使用默认 url 发送请求

0 投票
0 回答
21 浏览

angular-ngrx-data - 使用 @ngrx/data 为实体集合实现多个状态

使用普通的@ngrx,如果我需要为某事实现多个状态,我会这样做:

该用例用于实现使用自动完成的“项目选择器”的自定义小部件。有一种情况,小部件需要在同一部分中使用两次,并且两个小部件都需要具有单独的状态。我将如何使用@ngrx/data实现这一目标?

到目前为止,我唯一的解决方案需要手动操作。

首先,我在 EntityMetadataMap 中添加了一个不同的实体元数据,它只有一个不同的名称......

然后,我为它创建一个服务......

此解决方案不适合生产,如果我需要使用小部件 3 或 4 次,我必须继续这样做。必须有一种方法可以以编程方式执行此操作,或者根据我迄今为止所做的研究,这是不可能的。