angular - 使用@ngrx/entity,如何更新项目数组

标签 angular ngrx ngrx-store ngrx-entity

我正在使用 @ngrx/entity这将创建一个如下所示的状态:

{
   ids: [1, 2, 3],
   entities: [
     1: {id:1, title: "Some title", likes: {count: 1}},
     2: {id:2, title: "Some title", likes: {count: 1}},
     3: {id:3, title: "Some title", likes: {count: 1}}
   ]
}
@ngrx/entity确实为我们提供了一些更新项目的酷 helper ,但似乎(从我在文档中看到的)仅限于更新整个实体。

但是,当用户切换“喜欢”按钮时,我希望在我的 reducer 中仅更新 state.entities[2].likes属性与响应。

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

最佳答案

因为你的状态是不可变的。您需要更新所有实体。 @ngrx/entity 附带了一些可用于更新 1 个实体的帮助程序。在您的情况下,您需要使用 updateOne 方法。 https://ngrx.io/guide/entity/adapter

它看起来像这样:

adapter.updateOne(
{
  id: 2,
  changes: {...state.entities[2], likes: value}
},
state
);

关于angular - 使用@ngrx/entity,如何更新项目数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55971650/

相关文章:

angular - @ngrx/store 订阅商店的一部分,避免检测其他部分的变化

angular - 具有多个相关实体的ngrx `forFeature`

angular - 无法将广告放入我的 Angular Dart 应用程序

Angular Material 对话框和 ngrx

Marble 测试中的 Angular NgRx 效果错误 : Expected $. 长度 = 0 等于 2。/预期 $[0] = 未定义等于对象

angular - 如何捕获两个(或更多)@ngrx/store 操作并在组件中保留订阅,直到发生这种情况?

angular7 - NGRX 相互嵌套多个功能模块?

angular - Firestore 上不区分大小写的查询

angular - 在 *ngIf 中加载动态组件 - createComponent 未定义

带复选框的 Angular Material 垫树全选