问题标签 [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 回答
102 浏览

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 EntityServicesBases constructor is only accepting 1 argument of type EntityServicesElements. But how can I create my custom AppEntityService? I couldn't find any working example.

0 投票
1 回答
1556 浏览

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

0 投票
1 回答
246 浏览

angular - ngrx 效果在第一次命中时未从 api 获取数据

嗨,下面是我的组件代码,其中 save 函数有 validateData() 调用了 api 并且在调用 store.select 之后没有得到第一次点击的响应,它在第二次点击和 navigatetonext() 函数中获取更新响应因此第一次它采用空对象并且第二次命中它会得到响应,如果在 store.select 它被多次调用时写入 nagigatetonext 函数。

0 投票
3 回答
293 浏览

ngrx - ngrx/data:拥有多个 api 根的最佳方式?

我需要针对来自不同角度模块的不同 api 端点根。

例如

据我所知,ngrx/data 调用的 api 根可以通过 app.module 中的方式进行更改,但只能在全局范围内DefaultDataServiceConfig更改

如何在不同的 Angular 模块中有不同的 api 根?

目前我正在使用 aCustomizeHttpUrlGenerator根据我的命名约定更改网址,但我想有更好的方法。

谢谢

0 投票
1 回答
270 浏览

angular - 如何配置我想交换数据而不是合并的 NgRx 数据?

我如何配置ngrx/data,当我从entityService调用getAll(示例)10秒间隔时使用http。我想全部更改(删除所有不存在的数据)。我体验到它会合并而不是删除已经不存在的东西。

如果可能的话,我会避免使用 clearCache 功能。

1.运行 我从http获得以下(示例)数据。

count是4。没关系。

2.运行 我从http获得以下(示例)数据。

count是5。没关系。

3.运行 我从http获得以下(示例)数据。

count是5。这不好。不删除 id 5,它存在于entityCache.

0 投票
1 回答
1149 浏览

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应该恢复到{}因为我们正在取消删除。

0 投票
1 回答
1535 浏览

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和一般状态管理相对较新,我不知道在哪里可以找到最佳实践或推荐的解决方案,以及如何处理这个问题。

所以我的问题基本上是:

  1. 如何同时使用ngrx/data 和加载(相关)模型数据与ngrx/effects 或EntityEffects?
  2. 我在哪里扩展适当的服务/类,而不必手动实现每个 reducer/action,而是让 ngrx/data 来处理?

我已经搜索了 Stackoverflow、Gitter 并询问了同事,但没有成功 - 还是我让它变得比它必须的复杂得多?如果是这样,我很感激任何帮助。

注意:这个问题特别是关于 ngrx/

0 投票
1 回答
45 浏览

javascript - 在浏览器控制台中获取已调度的 NGRX 项目

我是 NGRX 的新手,我在 Angular2+ 应用程序中使用它。

我有 2 个组件CREATEREAD。我正在使用 NGRX 在CREATE COMPONENT的 click 事件上发送消息字符串。我从CREATE COMPONENT向 NGRX STORE 发送字符串消息,并在READ COMPONENT 的 HTML 文件中成功显示该字符串消息,例如

{{留言 | 异步}}

但是现在我想在我的控制台中获取相同的字符串,并且当我在 READ COMPONENT 的 TS FILE 中控制台 READ COMPONENT 的相同消息变量时,我得到一个存储对象,而我想获得在 READ COMPONENT 的 HTML 文件中显示的相同字符串.

有没有办法做到这一点?

0 投票
1 回答
811 浏览

angular - @ngrx/data 中未更新的实体

我正在尝试通过创建简单的 TODO 应用程序来学习 @ngrx/data

我创建了简单的 ToDoDataService 来覆盖默认 HTTP

在路由解析器中,我正在这样做

这工作正常,商店/实体已更新

但在我的组件中,我正在这样做

这里 API 正在调用,但实体仍在显示旧数据。不知道我做错了什么,

请帮忙

0 投票
1 回答
450 浏览

angular - 将提供程序注入 Angular 元素 (NGRX)

编译使用 NGRX 数据的 Angular 元素后,我的浏览器中不断出现以下错误:

在此处输入图像描述

我尝试在 NGRX 数据应用程序的每个 NgModule 中向提供程序添加和删除 EntityCollectionServiceElementsFactory,但没有成功(有两个模块)。

我有一个假设,我需要以某种方式将我的实体 NGRX 服务添加到注入器,但我没有关于如何这样做的示例。

我已经搞砸了好几天了,我无法弄清楚。

我的源代码如下:

在此处输入图像描述

这是我的 NGRX 数据实体服务之一的示例:

在此处输入图像描述

请帮忙,谢谢。