需要 reducer 将单个对象添加到我状态的每个 *child* 项目

Need reducer to add to every *child* item of my state a single object

我有一个 ngrx 商店(打字稿),我想在我的 EntityAdapter reducer 中检查一个动作,然后将动作的有效负载添加到商店中我项目的每个子项。下面的例子

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

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

我想要结束的是:

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

reducer运行后

这是它的核心:

export const permissionWithRolesReducer = createReducer(initialPermissionWithRolesState,

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

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

结果是添加权限下的角色

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

有什么想法吗?

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

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