更新角度对象的可观察数组

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

我正在尝试更新可观察对象数组中的一个对象并收到错误: 类型错误:无法分配给对象“[object Object]”的只读属性“名称”。 我该如何解决这个问题?

export interface User {
    id: string
    name : string
    lastname: string
    email: string
    address: string
    password: string
}
allUsers = signal<Observable<User[]>>(new Observable())
this.allUsers.update(val => val.pipe(map(users => users.map((user:User)=>{
if(user.id == "65c2a622878dcef34ed569ad"){
  user.name = "new Name"
  user.lastname = "new Lastname"
  user.address = "new Address"
  user.password = "new Password"
 }
  return user
}))))
angular rxjs
1个回答
0
投票

问题是数组中的对象是

immutable
,所以你不能直接修改它们的属性。

相反,您需要返回具有更新属性的新对象。

this.allUsers.update((val) =>
  val.pipe(
    map((users) =>
      users.map((user: User) => {
        if (user.id == "65c2a622878dcef34ed569ad") {
          return {
            ...user,
            name: "new Name",
            lastname: "new Lastname",
            address: "new Address",
            password: "new Password"
          };
        } else {
          return user;
         }
      })
    )
  )
);

我希望这对您有帮助。干杯🥂

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