问题标签 [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.
typescript - NGRX data: EntityServicesBase constructor accepts only one argument
I try to create a Sub-class EntityServices for application class convenience according to the NGRX/data documentation at https://ngrx.io/guide/data/entity-services#sub-class-entityservices-for-application-class-convenience
Unfortunately the provided example doesn't seem to work with the latest version of ngrx/data 8.5.2. The example looks like:
When I use the example with my code, I get the following TypeScript error:
Error: (parameter) entityCollectionServiceFactory: EntityCollectionServiceFactory Expected 1 arguments, but got 2. ts(2554)
for the line when I call the parents constructor super(...)
It looks like EntityServicesBase
s constructor is only accepting 1 argument of type EntityServicesElements
. But how can I create my custom AppEntityService? I couldn't find any working example.
angular - @ngrx/data - 如何扩展集合缩减器/替换对数据服务调用结果的处理?
使用@ngrx/data我想以getWithQuery
不同于默认的方式处理 API 调用的结果。
目前,如果这返回一个实体数组,则会entityCache
直接加载。
到目前为止,我使用了概述中显示的标准模式:
相反,我想处理以下 API 响应并entities
像往常一样将其加载到 entityCache 中,getWithQuery
但也将其粘贴total
在我商店的其他地方。
如果返回此 API 响应,我自然会收到以下错误:
我的理解是,为每个提供EntityCollectionDataService接口和方法的实体创建并注册了一个默认减速器add / delete / getAll / getById / getWithQuery / update
。
我想保留这些方法,但覆盖getWithQuery
减速器以实现我的目标。
这在自定义实体减速器行为中提到
但很多时候,您希望使用一些在之前或之后运行的附加 reducer 逻辑来扩展集合 reducer。
这怎么能做到呢?
如果我尝试在我的getWithQuery
内部覆盖,我仍然会收到上述错误PurchaseOrderService
angular - ngrx 效果在第一次命中时未从 api 获取数据
嗨,下面是我的组件代码,其中 save 函数有 validateData() 调用了 api 并且在调用 store.select 之后没有得到第一次点击的响应,它在第二次点击和 navigatetonext() 函数中获取更新响应因此第一次它采用空对象并且第二次命中它会得到响应,如果在 store.select 它被多次调用时写入 nagigatetonext 函数。
ngrx - ngrx/data:拥有多个 api 根的最佳方式?
我需要针对来自不同角度模块的不同 api 端点根。
例如
- 来自用户模块的 http://server:port/user-api
- 来自管理模块的 http://server:port/admin-api
- http://server:port/checkout-api来自 Cart 模块等等。
据我所知,ngrx/data 调用的 api 根可以通过 app.module 中的方式进行更改,但只能在全局范围内DefaultDataServiceConfig
更改
如何在不同的 Angular 模块中有不同的 api 根?
目前我正在使用 aCustomizeHttpUrlGenerator
根据我的命名约定更改网址,但我想有更好的方法。
谢谢
angular - 如何配置我想交换数据而不是合并的 NgRx 数据?
我如何配置ngrx/data,当我从entityService调用getAll(示例)10秒间隔时使用http。我想全部更改(删除所有不存在的数据)。我体验到它会合并而不是删除已经不存在的东西。
如果可能的话,我会避免使用 clearCache 功能。
1.运行 我从http获得以下(示例)数据。
count
是4。没关系。
2.运行 我从http获得以下(示例)数据。
count
是5。没关系。
3.运行 我从http获得以下(示例)数据。
count
是5。这不好。不删除 id 5,它存在于entityCache
.
javascript - @ngrx/data - 撤消乐观删除,UNDO_ONE 操作是否应该恢复 changeState?
堆栈闪电战
在@ngrx/data 中进行乐观删除(我们的英雄“蚁人”)会导致 changeState 被更新,如下所示:
使用下面的效果,当删除由于 http 请求错误而失败时,我触发了 UNDO_ONE:
问题:调度 UNDO_ONE 操作是否应该恢复changeState
即删除由删除操作引起的实体状态这部分的更改?
如果是这样,您如何正确调度 UNDO_ONE 以及需要哪些参数?
我探索了EntityActionFactory.create() 方法的数据和选项的不同值:
在这里,我正在执行一个乐观删除,并在 SAVE_DELETE_ONE_ERROR 上通过效果调度 UNDO_ONE 操作。
当我将 UNDO_ONE 换成 UNDO_ALL 时,changeState
确实会恢复到{}
这让我有理由认为changeState
应该恢复到{}
因为我们正在取消删除。
angular - 如何使用实体效果扩展 ngrx/data?
在将应用程序转换为使用 ngrx 状态管理时,我决定通过 EntityMaps 使用 ngrx/data 来管理某些模型的状态。到目前为止这工作正常,但是当事情变得更复杂时,例如基于从远程服务器获取的模型数据,我需要相关模型(订单->产品或 REST 端点格式GET orders/:id/products
)
我觉得卡住了——我知道在使用ngrx时有ngrx/effects来触发加载其他数据的动作,在这个ngrx/data guide中,提到了`EntityEffects来触发动作的副作用,但除此之外,文档似乎是正在进行中,现在对我没有多大帮助。
不幸的是,没有太多关于扩展 EntityEffects 来自定义远程数据的获取。当然,我可以一直执行选择器、操作、reducers、影响标准的 ngrx 方式,但不是 ngrx/data 的全部意义在于用更少的样板代码更容易地处理状态并充当包装器围绕ngrx,隐藏默认/样板代码但仍提供使用底层部分的方法?
由于我对ngrx和一般状态管理相对较新,我不知道在哪里可以找到最佳实践或推荐的解决方案,以及如何处理这个问题。
所以我的问题基本上是:
- 如何同时使用ngrx/data 和加载(相关)模型数据与ngrx/effects 或EntityEffects?
- 我在哪里扩展适当的服务/类,而不必手动实现每个 reducer/action,而是让 ngrx/data 来处理?
我已经搜索了 Stackoverflow、Gitter 并询问了同事,但没有成功 - 还是我让它变得比它必须的复杂得多?如果是这样,我很感激任何帮助。
注意:这个问题特别是关于 ngrx/
javascript - 在浏览器控制台中获取已调度的 NGRX 项目
我是 NGRX 的新手,我在 Angular2+ 应用程序中使用它。
我有 2 个组件CREATE和READ。我正在使用 NGRX 在CREATE COMPONENT的 click 事件上发送消息字符串。我从CREATE COMPONENT向 NGRX STORE 发送字符串消息,并在READ COMPONENT 的 HTML 文件中成功显示该字符串消息,例如
{{留言 | 异步}}
但是现在我想在我的控制台中获取相同的字符串,并且当我在 READ COMPONENT 的 TS FILE 中控制台 READ COMPONENT 的相同消息变量时,我得到一个存储对象,而我想获得在 READ COMPONENT 的 HTML 文件中显示的相同字符串.
有没有办法做到这一点?
angular - @ngrx/data 中未更新的实体
我正在尝试通过创建简单的 TODO 应用程序来学习 @ngrx/data
我创建了简单的 ToDoDataService 来覆盖默认 HTTP
在路由解析器中,我正在这样做
这工作正常,商店/实体已更新
但在我的组件中,我正在这样做
这里 API 正在调用,但实体仍在显示旧数据。不知道我做错了什么,
请帮忙