angular在默认变更检测期间如何处理对象或对象数组的比较?
创始人
2024-10-30 20:30:34
0

在Angular中,当进行默认的变更检测时,如果需要比较两个对象或对象数组是否相同,会默认使用JavaScript中的“引用比较”,即比较它们的引用地址是否一致。这意味着如果两个对象或对象数组的引用地址不同,即使它们的属性值相同,它们也会被视为不同的。

如果想要进行“深度比较”,即比较两个对象或对象数组的属性值是否相同,可以使用Angular中的ChangeDetectorRef的detectChanges方法来触发变更检测,并传递一个选项对象,其中包含了一个名为“cmp”的函数。这个“cmp”函数会被用来进行深度比较。示例如下:

import { Component, ChangeDetectorRef, IterableDiffers } from '@angular/core';

@Component({
  selector: 'app-root',
  template: `
    
  • {{ item.name }}
` }) export class AppComponent { items = [{ name: 'item 1' }, { name: 'item 2' }, { name: 'item 3' }]; iterableDiffer: any; constructor(private cdr: ChangeDetectorRef, private iterableDiffers: IterableDiffers) { this.iterableDiffer = this.iterableDiffers.find([]).create(null); } cmp(index: number, o1: any, o2: any) { return o1.name === o2.name; } addItem() { this.items.push({ name: `item ${this.items.length + 1}` }); this.cdr.detectChanges({ // 传递cmp函数以进行深度比较 cmp: this.cmp.bind(this) }); } );

在这个示例中,我们首先注入了ChangeDetectorRef和IterableDiffers,然

相关内容

热门资讯

透视数据!wpk辅助工具下载,... 透视数据!wpk辅助工具下载,hhpoker透视脚本,2分钟细说(有挂总结);透视数据!wpk辅助工...
透视好牌!aapoker辅助器... 相信很多朋友都在电脑上玩过aapoker辅助器怎么用吧,但是很多朋友都在抱怨用电脑玩起来不方便。为此...
透视有挂!wepoker底牌透... 1、透视有挂!wepoker底牌透视脚本下载,aapoker辅助器怎么用,玩家必看教程(有挂详情);...
透视透视挂!德普之星辅助正版,... 德普之星辅助正版赢率提升策略‌;透视透视挂!德普之星辅助正版,竞技联盟透视插件,系统教程(都是真的是...
透视软件!德普之星app安卓版... 透视软件!德普之星app安卓版破解版,德普之星透视辅助软件,玩家必看教程(有挂教程)1、快速入门:当...
透视辅助!aapoker可以开... WePoke高级策略深度解析‌;透视辅助!aapoker可以开挂吗,epoker免费透视脚本,德州教...
透视新版!aapoker辅助包... 透视新版!aapoker辅助包,hhpoker透视脚本下载,我来分享(有挂介绍)1、金币登录送、破产...
透视黑科技!wepoker底牌... 透视黑科技!wepoker底牌透视脚本下载,aapoker辅助器怎么用,最新技巧(有挂技巧)是一款可...
透视线上!aapoker有脚本... 透视线上!aapoker有脚本吗,来玩app破解版,科技教程(原来存在有挂);aapoker有脚本吗...
透视插件!德普之星辅助器app... 您好,德普之星辅助器app这款游戏可以开挂的,确实是有挂的,需要了解加Q群【1067239143】很...