问题标签 [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.
ngrx - 如何扩展 EntityCollectionReducerMethods NgRx 数据
在将数据字段添加到商店之前,我需要对其进行解析。
我希望从覆盖 getAll() 中解析数据字段。
此代码不起作用有人可以解释为什么吗?
angular - 了解ngrx/data的能力
我正在尝试熟悉ngrx/data,但我不确定它的功能。我已经阅读了文档和一些教程,但仍然有很多问号:
ngrx/data 提供了 CRUD 功能的方法。但是额外的非 CRUD 请求呢?是否可以为非 CRUD 请求(例如登录请求或其他内容)扩展 ngrx/data 并为此实现自己的操作、reducers 和效果?ngrx/data 的哪一部分必须扩展?实体动作?实体集合服务?实体集合减速器?关于这些东西的文档有点混乱,我真的不明白所有这些部分是如何协同工作的。也许有人可以对此进行澄清并提供一些示例代码。
在我的 Angular 项目中,我使用的是“传统”存储/操作/reducers/effects 模式。有时会在多个操作上触发效果(例如,成功的更新操作会触发从服务器重新读取)。是否也可以使用 ngrx/data 实现此行为?
是否可以在同一个商店实体上同时使用 ngrx/data 和“传统”商店模式?用于 CRUD 操作的 ngrx/data 和用于非 CRUD 操作的 store/actions/reducers/effects?
一些提示和想法会有所帮助。谢谢 :)
angular - 如何使用 @ngrx/data 自定义减速器?
我正在学习使用@ngrx/data,确实使用该库我推进了很多代码,但是在个性化它时我遇到了问题。我已经看到了如何向集合添加字段
export const entityMetadata: EntityMetadataMap = {
User: {
additionalCollectionState: {
testing: null
}
}
};
并在此处设置模块:
一切都很好,但是......,我如何添加自己的减速器,在文档中我看不太清楚
javascript - 如何为 ngrx/data 中的操作编写效果?
我在一个带有ngrx的项目中工作,还使用来自ngrx的其他库和包,如ngrx/entity或ngrx/data。
有时我需要在属于(就被调度而言)ngrx/data的某些操作中创建效果。
我发现一些困难的地方是调度其他动作,这些动作与ngrx / data以自动方式甚至我自己(自定义)调度的其他一些动作有很强的依赖性,如下所示
...
...
那么,如何监听ngrx/data中的QUERY_LOAD、通用get/all或其他任何动作来实现新效果的创建呢?它是否存在类似的东西
或者以另一种方式问,我如何在 ngrx/data 中为“ NATIVE ”操作编写效果?
我知道创建 ngrx/data 是为了尽可能多地摆脱 Actions、Selectors、Effects、Reducers,因此样板文件更少。但是,应该有一种方法可以从ngrx/data 创建效果。
提前谢谢了。
angular - 如何在操作文件中使用 entityActionFactory 来自定义 ngrx/data 中的操作?
我看到我们可以在ngrx/data中自定义我们的操作,如下所示
https://ngrx.io/guide/data/entity-actions#tagging-the-entityaction
因此,我的问题是如何在正常的***.actions.ts文件中创建这些自定义操作(示例)
通过我之前写的entityActionFactory然后在效果中使用它?(示例)
那可能吗?
提前谢谢了
ngrx-store - 覆盖 @ngrx/data、@ngrx/entity 操作、减速器、效果
我是@ngrx/data的新手,并试图了解如何覆盖reducer & actions。
我当前的问题可以通过其他方式解决,例如添加额外的方法、reducer 和操作,但我将来可能需要这个答案。
问题是我的删除调用应该只是将项目设置为商店中的“隐藏”而不是删除它。
angular - 如何在@ngrx/data 中对 EntityCollectionServiceBase 进行单元测试?
我有一个虚拟服务:
我有以下测试:
它给了我:
NullInjectorError: No provider for EntityCollectionServiceElementsFactory
所以我更新如下:
但现在它给了我:
NullInjectorError: No provider for ScannedActionsSubject!
如何正确修复我的测试?
angular - Angulat 9 NgRx 数据添加方法 - 使用查询参数创建自定义端点;
我在 Angular 9 项目上使用 NgRx 数据,我正在尝试使用 add() 方法保存用户。缺点是 api 端点类似于
http://localhost:{{port}}/something/{{clientId}}/users
用户组件
用户服务
有没有办法解决这个问题?我不想修改后端端点。
angular - 如何在@ngrx/data 中扩展自定义实体集合缩减器
在阅读并尝试了到目前为止的所有内容以将我的 AdditionalCollectionStates 更新为我的 EntityCollection 之后(基于文档中的一些信息,this SO Question,this other SO Question,another SO question和来自github存储库的问题)我发现自己陷入了困境应该是一个相当普遍的任务,在使用ngrx之前完全没有问题:使用ngrx对存储的实体集合进行排序。搜索解决方案将我带回到我已经看过 5 次的相同的 10 个链接,大多数示例要么太基本,要么过时,要么根本不使用 ngrx/data,或者类似的问题根本没有答案。
环境:Angular 9.1.7,ngrx 9.1.2,macOS 10.14.6
目标
如排序和分页文档中所述,将own 添加和更新additionalCollectionState
到我的 EntityCollection 中。我没有从服务器获取sortQuery属性(sortField、sortDirection),而是在我的 GUI 中设置它并根据它们对集合进行排序。我知道 EntityMetadataMap 上存在设置,但它对我的方式不够灵活,我想在整个应用程序中对不同 MatTables 中的集合进行动态排序。每当 MatTable 中的排序顺序/字段发生更改时,都应更新此附加属性。sortComparer
到目前为止我所取得的成就:
如上所述的附加CollectionState 的ngrx/data 方式有效,我的集合使用我在EntityMetadataMap 中提供的数据进行初始化。但是,更新自定义集合属性并不能按照我从文档中理解的方式进行。由于我没有从服务器获取sortQuery属性,因此不会调用 ResultsHandler。
我通过两种方式解决了这个问题:a)使用 ngrx 和 ngrx/entity 方法和 b)通过尝试扩展自定义EntityCollectionReducer的 ngrx/data 方式
a) 我成功创建了自定义 Action 和自定义 Reducer 并更新了state 属性,但没有更新之前定义的集合属性。我的行动基本上是:
它是从服务中调用的:
并在减速器中处理:
reducer 在 reducers/index.ts 中导出:
在 app.module 中设置为:
这将创建一个带有sortQuery属性的resourceSort集合,如该屏幕截图所示:并根据更改后的 sortQuery 属性对其进行更新。但是,我更喜欢在 Resource entityCache 集合中使用已经初始化的 sortQuery 属性(是的,我也尝试将其添加到entityCache功能中并忽略它): StoreModule.forFeature('entityCache', reducers)
b) 因此,另一种方法是在 app.module 中使用 EntityCollectionReducerRegistry:
从文档:
Entity Reducer 是存储实体缓存中所有实体集合的主 reducer。该库没有命名实体减速器类型。相反,它依赖于 EntityCacheReducerFactory.create() 方法来生成该 reducer,它是一个 NgRx ActionReducer<EntityCache, EntityAction>。
我有一种感觉,使用 b) 方法我可能走在正确的轨道上,但是我被缺乏如何处理这个问题的文档和示例所困扰 - 有没有人可以帮助我?
如果需要更多详细信息,我很乐意提供,如果有不清楚的地方,因为英语不是我的母语,我很乐意澄清,如有必要,请尝试提供一个简化的 stackblitz 示例。谢谢!