Angular在对象数组中添加新对象后不会更新
创始人
2024-10-30 19:30:53
0

这可能是由于Angular对数组中的对象进行了浅层比较而导致的。为了解决这个问题,您可以使用切换数组引用的方法来更新视图。可以通过以下两种方式之一实现:

方法一:

在您的组件中,创建一个新的数组,然后使用 Array.push() 方法将新对象推入该数组。然后将该数组分配给原始数组的引用。这将强制Angular重新渲染组件,并更新视图,使新对象显示出来。

示例代码如下:

originalArray: Object[] = [{id: 1, name: 'John'}, {id: 2, name: 'Doe'}]; newObject: Object = {id: 3, name: 'Alice'};

addToOriginalArray() { let tempArray = this.originalArray.slice(); // create a copy of original array tempArray.push(this.newObject); // push new object to temp array this.originalArray = tempArray; // assign temp array to original array reference }

方法二:

使用 Angular 的 change detection 将变更检测策略更改为 OnPush。这将防止Angular每次更改检查时都进行全面调用,并使它仅在输入对象更改时才调用。在这种情况下,您需要通过具有新值的对象将输入对象重写。

示例代码如下:

import {Component, Input, ChangeDetectionStrategy} from '@angular/core';

@Component({ selector: 'app-my-component', templateUrl: './my-component.component.html', styleUrls: ['./my-component.component.css'], changeDetection: ChangeDetectionStrategy.OnPush // change change detection strategy }) export class MyComponent { @Input() originalArray: Object[] = [{id: 1, name: 'John'}, {id: 2, name: 'Doe'}]; @Input() newObject: Object = {id: 3, name: 'Alice'};

addToOriginalArray() { let tempArray = this.originalArray.slice(); // create a copy of original array

相关内容

热门资讯

关于透视!德普之星app安卓版... 关于透视!德普之星app安卓版破解版,哈糖大菠萝有挂吗5个常用方法,办法教程(了解有挂)-哔哩哔哩1...
详细透视!德州透视是真的吗!一... 详细透视!德州透视是真的吗!一直是有辅助技巧(果真有挂)-哔哩哔哩德州透视是真的吗能透视中分为三种模...
辅助透视!wpk俱乐部怎么作必... 辅助透视!wpk俱乐部怎么作必弊,xpoker辅助,模块教程(真是有挂)-哔哩哔哩wpk俱乐部怎么作...
普及透视!德州局透视脚本下载安... 普及透视!德州局透视脚本下载安装最新版本!一贯是有辅助教程(有挂秘籍)-哔哩哔哩1、上手简单,内置详...
普及透视!wepoker辅助工... 普及透视!wepoker辅助工具,hardrock作必弊,项目教程(有挂详情)-哔哩哔哩1、起透看视...
详情透视!pokemmo脚本!... 详情透视!pokemmo脚本!都是一直都是有辅助技巧(有挂教程)-哔哩哔哩1、许多玩家不知道poke...
必备透视!hhpoker外开挂... 必备透视!hhpoker外开挂靠谱吗,wepoker怎么发冤家牌,秘籍教程(发现有挂)-哔哩哔哩;在...
解迷透视!pokemmo脚本辅... 解迷透视!pokemmo脚本辅助器!一贯是真的有辅助教程(有挂细节)-哔哩哔哩1、pokemmo脚本...
必备透视!wepoker可以免... 必备透视!wepoker可以免费玩吗,wejoker辅助器要钱玩吗,教材教程(真的有挂)-哔哩哔哩1...
分享透视!pokemmo手机版... 分享透视!pokemmo手机版修改器!切实真的有辅助教程(有挂头条)-哔哩哔哩1、全新机制【poke...