javascript 如何更新Angular 中的数组对象值

5us2dqdw  于 2022-11-27  发布在  Java
关注(0)|答案(1)|浏览(146)

尝试更新数组对象值,但不起作用。我尝试从数组更新项值,但不更新。如何解决此问题。

ngOnInit() {
this.arr = [
  {
    lable: 'test1',
    item: 'Row6',
  },
  {
    lable: 'test2',
    item: 'Row9',
  },
  {
    lable: 'test3',
    item: 'Row4',
  },
];
}

 updateVal() {
    this.arr = this.arr[0].item = 'Row9';
    console.log(this.arr);
 }

演示:https://stackblitz.com/edit/angular-ivy-srsirm?file=src%2Fapp%2Farrcom%2Farrcom.component.ts

ttisahbt

ttisahbt1#

TL;DR这可能会起作用

updateVal() {
   this.arr[0].item = 'Row9';
   this.arr = [...this.arr]
 }

我觉得你混淆了两个概念。
1.是的,你应该给予Angular一个新的数组/对象的引用来触发变化检测(从而触发重新渲染)
1.但是,您不应该将属性赋给某个字符串值(在您的示例中为'Row9'
如果你只想改变一个元素的值,你可以用this.arr[0].item = 'Row9'来改变它。但是,正如你所观察到的,你的操作不会有新的呈现。数组中对象的内容会改变。如果你不想触发新的呈现/改变检测,你需要创建一个新的数组引用,例如:this.arr = [...this.arr](基本上将所有列表元素移动到新列表中)。

相关问题