需要减速器将单个对象添加到我状态的每个* child *项目中

时间:2019-08-29 18:37:13

标签: ngrx ngrx-store

我有一个ngrx存储区(使用打字稿),我想在EntityAdapter减速器中检查某个动作,然后将该动作的有效负载添加到存储区中我项目的每个子项中。下面的例子

我们在状态中有一个对象数组,每个对象都有一个属性,我们也称它X为数组。

[
 {x:[]}
,{x:[]}
,{x:[]}
]

我最终想要得到的是:

[
 {x:[{y}]}
,{x:[{y}]}
,{x:[{y}]}
]

减速器运行后

这是它的缺点:

export const permissionWithRolesReducer = createReducer(initialPermissionWithRolesState,

  on(actions.loadPermissionsWithRolesSuccess,(state,{permissionWithRoles: permissionWithRoles}) =>{ 
    return permissionWithRolesAdapter.upsertMany(permissionWithRoles, state)}),

    on(actions.addRole,(state,{newRole: newRole}) =>{ 
      return permissionWithRolesAdapter.???}));

结果是在权限下添加角色。

商店包含权限列表。 每个权限均包含其适用的角色列表。 当我们添加新角色时,我想将其添加到商店中的每个权限中。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用map,它映射到集合中的每个实体(类似于javascript中的[].map())。

return permissionWithRolesAdapter.map(entity => ({ ...entity, y: action.y }), state)