问题标签 [ngrx-entity]

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 投票
2 回答
1137 浏览

ngrx - NGRX; 如何对适配器数据应用过滤器

我有这段代码,我想在上面应用过滤器。状态使用 EntityState 和 Adapter。getAllObjects 需要获取 parentId 为 13 的类别,而 getAllTextures 获取剩余的类别。

这是减速机:

是否可以按条件从适配器中选择数据?如果是这样,怎么做?

0 投票
1 回答
159 浏览

angular - 我的操作没有调用关联的减速器和效果

我的行动——

相关效果——

和减速机 -

当我调用动作时 -

动作运行,其中写入的控制台被打印,但相关的效果和减速器不运行。

注意:我正在使用 angular 8 的 ngrx 商店实体。

0 投票
1 回答
285 浏览

angular - Angular ngrx-data 将服务响应写入单独的 entityCache 部分

我目前正在开发一个使用ngrx-data 来存储信息的项目。到目前为止它工作得很好,但现在我想存储来自端点的实体数据,它在它的响应中给了我两种不同的实体类型。

现在我想将它们分别保存在entityCachengrx-data 中。为此,我在 Angular 中实现了基本的 HTTP 服务,它扩展了DefaultDataService. 我将其集成到我的外观中并添加了必要的元数据。

我能够从商店“整体”获取所有收到的信息,但我认为我失去了使用 ngrx-data 获得的许多优势(比如获取一组 id)。

有没有办法规范化/拆分数据并将其写入不同的部分entityCache

非常感谢您的任何提示。

0 投票
1 回答
57 浏览

ngrx - 如果我收到的内容类型是 JSON-LD + Hydra,我应该使用 ngrx-data 吗?

我喜欢 JSON-LD、Hydra 的优势,并且刚刚了解了 NgRx/data。

我尝试在没有自定义的情况下使用它,这显然不起作用。今天我花了几个小时在文档上,这给我留下了更多问题。

重要的是,我不想牺牲任何关于收藏的信息。所以我不能只使用自定义效果。

关于如何解决这个问题的任何想法?

收藏回复:

单一响应:

0 投票
3 回答
344 浏览

angular - 使用 NgRx 为同一个组件创建不同的状态

我的方案是为同一组件创建不同的独立状态,因此当一个组件发生任何变化时,不会影响其他组件状态。

我面临的问题是,每当我更改一个组件中的任何内容时,它也会更新其他组件状态

在我的情况下,我正在创建一个数据选项卡,在其中我使用不同的对象数据数组动态加载相同的组件。因此,如果我更新一个选项卡中的任何数据,则另一个选项卡不应受到影响。

NgRx 可以吗?

0 投票
1 回答
220 浏览

angular - 如何将泛型类型传递给泛型选择器?

我遇到了 Typescript 的问题,我不知道如何解决它...

我创建了一个通用状态来管理多个实体。每个实体都有自己的接口,每个实体都是泛型类型的一部分(在我的示例中称为引用)。

我想要的:当有人需要从这个状态获取实体时,他在select方法(或selectReference?)中指定所需的接口,然后 Typescript 检查给定接口是否是Reference类型别名的一部分。

我的接口和类型别名:

我的选择器:

我的组件:

在此示例中, ts linter 显示此错误:Type 'Reference' is not assignable to type 'A'.

我怎样才能做到这一点 ?

提前谢谢你:)

0 投票
2 回答
348 浏览

ngrx - 整个州或部分的 ngrx/实体

我不确定我是否理解@ngrx/entity包。当然有例子,但我没有发现任何一个状态大于一个属性/主题的例子。

所以在使用@ngrx/entity我的子状态之前,如下所示。是的,它实际上是一个子状态。这意味着我对每个功能进行了分离,但它仍然不是单一属性接口。我有几个模型接口,State 由它们组成。那些是我想用“实体特征”替换的数组。从示例中我看到实体适用于整个州?

那么要使用 Enity 我应该怎么做呢?

我应该用什么来代替?我有很多属性。

或者

每个模型接口ListItemsFooObject应该扩展EntityState吗?

0 投票
1 回答
827 浏览

angular - 在特征内选择数据的ngrx/entity问题

我正在尝试创建一个具有特征状态和组合减速器的库。

我的特征缩减器如下所示:

索引.ts

bookEntriesFeatures 看起来像这样:

book-entry.reducer.ts

在我的功能模块中,我使用我的功能密钥和功能缩减器导入 StoreModule.forFeature()。

不,我正在尝试根据选定的 id 选择一个条目。因此,我触发了一个操作,成功地将所选条目的 id 添加到我的图书条目状态。

要选择所选条目,我的功能选择器中有以下选择器:

索引.ts

当通过另一个调度的动作加载条目时,选择器只被调用一次(在数据加载之前)。我发现当我在功能选择器中从 bookEntriesAdapter 创建选择器时,它可以工作。像这样:

索引.ts

但为什么?我有点迷失了,试图理解为什么这不起作用。

上面不起作用的示例来自官方的ngrx doc(https://ngrx.io/guide/entity/adapter)。工作的一个来自ngrx/platform示例代码(https://github.com/ngrx/platform/blob/master/projects/example-app/src/app/books/reducers/index.ts)。

我认为没有必要,但我没有扩展 root-app-store-state,因为我无权访问它,因为它是一个库(试图绕过域驱动设计,我创建了一个功能库来处理这类问题)。或者这可能是问题所在?

如果有人能再解释一下,我将不胜感激。

0 投票
1 回答
93 浏览

rxjs - 如果可用,如何创建每 5 秒从状态记录一次的 NGRX 效果?

我想使用 NGRX 创建一个消息队列,添加到队列中的每条消息都应显示 5 秒钟,然后从状态中删除,

  • 在队列中的最后一条消息超时后,应将 null 值分配给 currentMessageId
  • 消息应立即从队列中取出,如果currentMessageId == null

这是我的状态:


我已经尝试过这段代码,如果商店里总是有一条消息,它会很好地工作:

但考虑这种情况:

  • 效果计时器从第 0 秒开始,而商店中没有消息
  • 一条消息在第 1 秒添加到存储,然后消息必须等待 4 秒才能打勾,然后显示在视图中
    • 我希望它尽快显示并在 5 秒后删除

这里还有减速器功能:

0 投票
1 回答
452 浏览

angular - Ngrx 选择器组成循环依赖

我有两个实体:EntityA 和 EntityB。EntityA 需要来自 EntityB 的选择器才能组成一个新的选择器。然后,在 EntityB 上,我们需要来自 EntityA 的选择器来组成一个新的选择器。这会产生循环依赖错误。

解决问题的最佳方法是什么?是的,我知道我可以将依赖选择器移动到同一个 Entity<>.selectors 文件,但我不喜欢它。我考虑过创建一个仅包含实体之间公共选择器的文件。