类型错误:无法添加属性提供程序,对象不可扩展 NGRX

问题描述 投票:0回答:1

这是在我迁移到最新版本的 NGRX 后发生的 “@ngrx/组件商店”:“15.2”, "@ngrx/effects": "15.2.0", “@ngrx/路由器商店”:“15.2.0”, “@ngrx/store”:“15.2.0”, “@ngrx/store-devtools”:“15.2.0”,

    users$= createEffect(() => this.actions$
    .pipe(
      ofType(users.LOAD_USERS),
      tap((action: users.LoadUsersAction) => {
        action.item.name = action.payload;
        action.item.id = action.payload.map(item => item.id);
      })));

它给出 TypeError: Cannot add property name, object is not extensible at这两行的 name 和 id。

已经尝试过以下方法,但没有一个起作用:-

    action.item = {
      ...action.item,
      name: action.payload,
      id: action.payload.map(item => item.id)
----------------------------------
    const newItem = {
      ...action.item,
      name: action.payload,
      id: action.payload.map(item => item.id)
    };
------------------

    action.item = Object.assign({}, action.item, {
      name: action.payload,
      id: action.payload.map(item => item.id)
    });
javascript angular ngrx ngrx-store ngrx-effects
1个回答
0
投票

动作(和状态)是不可变的。 当您直接更新属性时,这会导致错误。 理想情况下,您应该重写代码,但您也可以禁用这些检查。 有关更多信息,请参阅https://ngrx.io/guide/store/configuration/runtime-checks

© www.soinside.com 2019 - 2024. All rights reserved.