Angular的*ngFor指令不更新视图
创始人
2024-10-24 01:00:33
0

使用不可变对象或手动触发变化检测

在Angular中,*ngFor指令通常用于遍历数组并生成相应的DOM元素。但是,当我们对数组进行修改时,视图并不总是会被更新。这是因为Angular默认采用的是引用比较的变化检测策略,而不是深度比较。因此,当我们修改数组时,其实是修改了同一个引用对象的内容,而不是创建了一个新的数组对象,导致变化检测无法触发。

为了解决这个问题,我们可以采用不可变对象的方式,即在修改数组时,创建一个全新的数组对象并赋值给原始数组,以此来触发视图的更新。例如:

this.items = [...this.items, newItem]; //添加新元素
this.items = this.items.filter(item => item != deletedItem); //删除元素

另一种方式是手动触发变化检测。我们可以注入ChangeDetectorRef服务,并调用其detectChanges()方法,以此来强制更新视图。例如:

import {ChangeDetectorRef} from '@angular/core';

constructor(private cdr: ChangeDetectorRef) {}

ngOnInit() {
  setInterval(() => {
    //修改数组
    this.cdr.detectChanges(); //手动触发变化检测
  }, 1000);
}

使用这两种方法之一,都可以确保视图正确地根据数组的变化来更新。

相关内容

热门资讯

黑科技美元局(德扑之星底牌)w... 黑科技美元局(德扑之星底牌)wpk俱乐部竟然真的有挂!太无语了真是是有挂(2021已更新)(哔哩哔哩...
黑科技辅助(微扑克有辅助挂)W... 黑科技辅助(微扑克有辅助挂)WepoKe好像真的是有挂!太夸张了原生是真的有挂(2026已更新)(哔...
黑科技真的(Wepoke安装)... 黑科技真的(Wepoke安装)菠萝德州app起初是有挂!太夸张了总是有挂(2021已更新)(哔哩哔哩...
黑科技安装(cloudpoke... 黑科技安装(cloudpoker辅助透视)欢乐棋牌其实存在有挂!太嚣张了都是真的有挂(2025已更新...
黑科技辅助挂(德扑之星花钱)A... 黑科技辅助挂(德扑之星花钱)AaPOKER都是有挂!太嚣张了先前是有挂(2026已更新)(哔哩哔哩)...
黑科技真的(Wepoke必备)... 黑科技真的(Wepoke必备)EV扑克一向有挂!太离谱了先前是有挂(2025已更新)(哔哩哔哩)这是...
辅助黑科技(WPK)德扑ai总... 辅助黑科技(WPK)德扑ai总是是有挂!太夸张了原来有挂(2024已更新)(哔哩哔哩)需要回顾用户提...
黑科技数据(德扑网上)aa p... 黑科技数据(德扑网上)aa poker本来真的是有挂!太嚣张了本然存在有挂(2024已更新)(哔哩哔...
黑科技了解(德扑ai软件)线上... 《黑科技了解(德扑ai软件)线上wpk最初真的有挂!太坑了其实是有挂(2022已更新)(哔哩哔哩)》...
黑科技游戏(WPK模拟器)aa... 黑科技游戏(WPK模拟器)aapoker固有是真的有挂!太坑了最初是真的有挂(2020已更新)(哔哩...