问题标签 [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.
angular - Angular & NgRx-Data 更新 & 订阅问题
我正在使用 Angular 11 和 NgRx-Data 10.1.2。我正在使用智能组件/哑组件模式。
在我的“列表”视图中,当我选择一个项目时,我会路由到一个传递项目 ID 的详细信息页面。
在我的详细信息页面中,我订阅了实体服务 getByKey()
这是 SiteEntityService:
单击“编辑”时,我以模式打开编辑组件:
在 Edit 组件中,点击提交表单时:
更新后,如果我调查商店,我可以看到实体已正确更新,但是,在模式关闭后,尽管商店(和数据库)更新,但显示页面上的订阅不会更新。
那么我哪里错了?如何让显示页面刷新数据?
针对@Fiber 的回答进行了编辑:
它现在可以工作了,但是由于订阅返回了一个项目数组,这意味着我必须在数组中搜索正确的项目,这似乎并不理想。
angular - 使用@ngrx/data,您如何在自定义数据服务上形成从更新到实体的 JSON 补丁文档?
我的@ngrx/data 用例要求我通过扩展来构建自定义实体数据服务DefaultDataService<T>
。我正在使用的 API 接受 JSON 补丁文档进行更新。EntityCollectionDataService<T>
定义以下更新函数:
哪里有类型Update<T>
的成员。我在这里面临的问题是,我无法仅使用实体更改字段的一部分来形成 JSON 补丁文档。我需要实体的未更改和更改状态。changes
Partial<T>
我在这里可以看到的唯一解决方案是EntityChangeTracker
通过EntityCollectionService
我的实体访问,我只是对如何使用更改跟踪器有点困惑,因为它只是通过 EntityCollectionServicechangeState$
字段的可观察的更改流。
有没有更简单的方法我在这里看不到?我还想只访问商店并拉取实体的当前状态,但我更喜欢使用乐观并发,所以在DefaultDataService
我写的时候通过更新的副作用调用商店已经改变了。
angular - 如何在@ngrx/data 中对 EntityCollectionServiceBase 进行单元测试?如何测试@ngrx/data 服务?
我想测试我的 ngrx 数据服务:
到目前为止,我已经定义了以下测试类:
但我收到错误:
TypeError:无法解构“serviceElementsFactory.create(...)”的属性“dispatcher”,因为它未定义。
Karma 结果:TypeError:无法解构“serviceElementsFactory.create(...)”的属性“dispatcher”,因为它未定义。
如何正确修复我的测试?
angular - 如何以角度为json数据实现输入搜索和下拉过滤器
我正在尝试为 JSON 数据实现搜索过滤器和下拉过滤器。使用该数据我需要使用单独的搜索过滤器和下拉过滤器过滤我的表。只有我已经实现并且工作正常但卡在下拉过滤器中的搜索过滤器。[我创建的图像的 URL] [1]: [https://i.stack.imgur.com/UpNt5.png] [2]: https://i.stack.imgur.com/Zu32a.png
ngrx - Ngrx/effects 不能与 angular 2 异步工作
我是 Ngrx 的新手,我们在实施中遇到了困难,需要一些帮助
架构:当用户通过身份验证时,我们正在尝试填充存储,然后尝试重定向。
期望:效果应该被称为异步,在 ui 中我们必须做重定向
问题:重定向到主页仅在 ngrx/effect api 调用完成后才会发生。
angular - NGRX 数据 - 为 Module 提供多个 EntityCollectionReducerMethodsFactory 类
按照附加集合状态的文档,我已经能够使其仅适用于一个实体集合。在我正在构建的模块中,到目前为止我使用了三个实体集合。我不确定应该如何在模块中进行注入,但这就是我正在做的事情:
上述方法不起作用。我注意到的是最后一个提供者超过了前两个。例如,在上面的示例中,有效的注入服务是ExtendedUsersCollectionReducerMethodsFactory
. 如果我像这样更改顺序:
那么有效的是ExtendedPharmaCollectionReducerMethodsFactory
. 我的问题如下......
如何EntityCollectionReducerMethodsFactory
为不同的实体集合提供不同的?
javascript - 可以将多个查询参数传递给@ngrx/data 上的getWithQuery() 方法吗?
这个 ngrx/data API有方法:
getWithQuery(queryParams: string | QueryParams, options?: EntityActionOptions): Observable<T[]>
要从数据源中检索数据,我们可以以简单的形式使用:
这很清楚,并且可以很好地返回数据子集。
现在,我们将如何在多个条件下使用相同的方法获取数据子集?
例如:
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 发送请求
angular-ngrx-data - 使用 @ngrx/data 为实体集合实现多个状态
使用普通的@ngrx,如果我需要为某事实现多个状态,我会这样做:
该用例用于实现使用自动完成的“项目选择器”的自定义小部件。有一种情况,小部件需要在同一部分中使用两次,并且两个小部件都需要具有单独的状态。我将如何使用@ngrx/data实现这一目标?
到目前为止,我唯一的解决方案需要手动操作。
首先,我在 EntityMetadataMap 中添加了一个不同的实体元数据,它只有一个不同的名称......
然后,我为它创建一个服务......
此解决方案不适合生产,如果我需要使用小部件 3 或 4 次,我必须继续这样做。必须有一种方法可以以编程方式执行此操作,或者根据我迄今为止所做的研究,这是不可能的。