尝试更新数组对象值,但不起作用。我尝试从数组更新项值,但不更新。如何解决此问题。
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
1条答案
按热度按时间ttisahbt1#
TL;DR这可能会起作用
我觉得你混淆了两个概念。
1.是的,你应该给予Angular一个新的数组/对象的引用来触发变化检测(从而触发重新渲染)
1.但是,您不应该将属性赋给某个字符串值(在您的示例中为
'Row9'
。如果你只想改变一个元素的值,你可以用
this.arr[0].item = 'Row9'
来改变它。但是,正如你所观察到的,你的操作不会有新的呈现。数组中对象的内容会改变。如果你不想触发新的呈现/改变检测,你需要创建一个新的数组引用,例如:this.arr = [...this.arr]
(基本上将所有列表元素移动到新列表中)。