首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ngFor不显示推送到源阵列的新数据的问题

ngFor是Angular框架中的一个指令,用于在模板中循环显示数据。当使用ngFor指令时,有时候会遇到推送到源阵列的新数据不显示的问题。

这个问题通常是由于Angular的变更检测机制引起的。Angular使用了一种称为脏检查的机制来检测数据的变化,并更新视图。但是,当我们推送新数据到源阵列时,Angular可能无法检测到这个变化,导致新数据不显示。

解决这个问题的方法有以下几种:

  1. 使用不可变对象:推荐使用不可变对象来更新源阵列。不可变对象是指在修改数据时创建一个新的对象,而不是直接修改原始对象。这样可以确保每次推送新数据时,都会创建一个新的对象,从而触发Angular的变更检测机制。可以使用Immutable.js等库来实现不可变对象。
  2. 手动触发变更检测:可以使用Angular的ChangeDetectorRef服务手动触发变更检测。在推送新数据到源阵列后,调用ChangeDetectorRef的detectChanges方法,强制Angular检测数据变化并更新视图。
  3. 使用trackBy函数:ngFor指令支持使用trackBy函数来跟踪每个循环项的唯一标识。通过在ngFor指令中使用trackBy函数,Angular可以更准确地检测到数据的变化。trackBy函数应返回一个唯一标识符,通常是循环项的ID或索引。例如:
代码语言:txt
复制
<div *ngFor="let item of items; trackBy: trackByFn">{{ item.name }}</div>
代码语言:txt
复制
trackByFn(index, item) {
  return item.id;
}
  1. 使用异步管道:可以使用Angular的异步管道来处理推送新数据不显示的问题。异步管道可以在数据发生变化时自动触发变更检测。例如,可以使用AsyncPipe来处理Observable或Promise返回的数据。

以上是解决ngFor不显示推送到源阵列的新数据的一些常见方法。根据具体情况选择合适的方法来解决问题。关于Angular的更多信息和相关产品,你可以参考腾讯云的Angular产品文档:Angular产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Appetite】ionic3实录(七)次页实现及分析解决问题【下】

上一节提到几个问题,现在我们逐一来解释一下: 问题一:initSwiper方法为什么放在获取数据之后?它放在其它地方可以吗?...也就是说,前者只会初始化一次,而后两者每次显示都需要重新初始化,进一步说,若使用后两者方式,对于这里用到swiper,它不是一个angular封装起来组件,不会自动初始化,我们每次显示它时都需要显式调用一下...问题延伸:既然ion-slides已经是封装起来控件了,我们用它不是可以省掉不少代码?...数据未正确应用 对比上一节实际效果图,会发现这里只显示了两个图片,什么原因呢?...是因为该组件在异步获取到数据this.vm.dessertSlides前已完成了初始化了,这样数据其实没有应用到,为了处理这种情况,我们改造一下html,为ion-slides组件加上一段*ngIf=

1.4K20

最受欢迎10大Angular技巧

令我有些难过是,一些 Angular 开发人员不喜欢创建自己管道,可其实你几乎可以在任何数据转换场景中创建管道。 这是适用于许多情况通用管道示例: ?...还有许多运算符不是很流行,但是可以用一行代码来解决你特定问题。 我就发现了一个例子: ?...s=20 你甚至可以制作自己 ngFor 替代品 最后一个:Angular 对于 for...of... 之类指令有特殊语法。这样,你可以创建自己 ngFor。...例如,它可以是用于迭代映射 ngFor。或一个简单从一个数字迭代到另一个数字 for: ? ?...s=20 小 结 Angular 是一个很大主题,能说东西还有很多。我有很多关于技巧想法,准备与社区分享我最佳实践。

2.1K40

AngularDart4.0 指南- 模板语法二 顶

例如,重新查询服务器可能会重置所有英雄对象列表。 大多数,如果不是全部,以前显示英雄。 你知道这一点,因为每个英雄ID没有改变。 但是Angular只能看到对象引用列表。...“Reset heroes”用相同 hero.ids创建heroes。 “Change ids”用hero.ids创造heroes 。...该位置成员是数据绑定。 本节重点讨论对目标的绑定,它们是绑定声明左侧指令属性。这些指令属性必须声明为输入或输出。 请记住:所有组件都是指令。...请注意数据绑定目标和数据绑定之间重要区别。 绑定目标是在=左边。 位于=右侧。 绑定目标是绑定标点符号中属性或事件:[],()或[()]。...另一方面,属性路径中空值时不时出现可能还好,特别是当数据现在为空,将来将返回数据。 在等待数据时候,视图应该没有怨言地呈现,而null属性路径应该像title属性一样显示为空白。

29.9K20

前方高能,与“程序崩溃”第一次邂逅!

经过上周,讲了“阵列运算”模块内容后,本号粉丝量飞涨了一把。 非常感谢大家帮忙,请继续帮,我们好内容还有很多呢! 同时,老丁非常欢迎更多小朋友和大朋友一起加入我们这个分享平台。...而这也是学习机器人根本目标: 学会分析和解决问题 我们从一个例子开始,今天继续讲“阵列运算”。 举个例子 我们使用上节课学习知识,来编写一个程序。 在屏幕上循环显示【1~5】数字。...而当我们学习了“阵列”后,可能你会遇到第一个“崩溃”情况产生。这个就跟我们没学到“根号”前,只认识“π”这样一个无限循环小数是一个道理。...万一以后数据是由机器自动填写, 我们不知道有多少个数据,怎么办呢?? 这里我们引入一个概念 “长度” 就像排队,一排只有5个人, 这里“5”个人,代表是一个队伍“长度”。...再套上一个“大”循环,让它无限循环下去,屏幕上就会不停地重复显示阵列数据啦! 这两节课重点!

74890

AngularDart4.0 英雄之旅-教程-04明细 顶

如果您结构匹配,请返回该页面以弄清楚您错过了什么。 ? 如果该应用尚未运行,请启动该应用。 当您进行更改时,请通过重新加载浏览器窗口来保持运行。...,因为英雄名字最终将来自数据服务。  ...在显示数据Showing a list property with *ngFor部分阅读更多关于ngFor和模板输入变量和模板语法页ngFor部分 在节点内添加内容hero模板变量来显示英雄属性...在结构指令页面和模板语法页面的内置指令部分阅读有关ngIf和ngFor更多信息。 格式化选中hero 当选择英雄细节显示在列表下方时,很难在列表中识别选定英雄。...您将Hero类移到lib / src下自己文件中。 你增加了选择英雄和显示英雄细节能力。 您了解了如何在组件模板中使用核心指令ngIf和ngFor

3K30

ng-content 中隐藏内容

由于许多问题与Angular 中组件生命周期相关,因此我们主要组件将显示一个计数器,用于展示它已被实例化次数: import { Component } from '@angular/core';...如果 ng-content 上没有设置 select 属性,它将接收全部内容,或接收匹配任何其他 ng-content 元素内容。...难道这是 ngIf 指令产生问题,让我们测试一下 ngFor 指令,看看是否有同样问题: import { Component } from '@angular/core'; @Component...为什么按照我们预期运行? The explanation 不会 “产生” 内容,它只是投影现有的内容。...你可以认为它等价于 node.appendChild(el)或 jQuery 中 $(node).append(el) 方法:使用这些方法,节点不被克隆,它被简单地移动到它位置。

2.7K30

Angular快速学习笔记(3) -- 组件与模板

显示数据 在 Angular 中最典型数据显示方式,就是把 HTML 模板中控件绑定到 Angular 组件属性。... 小结 带有双花括号插值表达式 (interpolation) 来显示一个组件属性 用 ngFor 显示数组 用一个 TypeScript 类来为你组件描述模型数据显示模型属性 用 ngIf...绑定语法 数据绑定是一种机制,用来协调用户所见和应用数据。绑定类型可以根据数据方向分成三类: 从数据到视图、从视图到数据以及双向从视图到数据再到视图。...="expression" 双向 思维模型 数据绑定威力和允许用自定义标记扩展 HTML 词汇能力,会让你把模板 HTML 当成 HTML+。...ngOnInit() 在 Angular 第一次显示数据绑定和设置指令/组件输入属性之后,初始化指令/组件。

15.2K30

AngularDart4.0 指南- 显示数据

您可以通过将HTML模板中控件绑定到Angular组件属性来显示数据。 在这个页面中,您将创建一个包含英雄列表组件。 您将显示英雄名单列表,并有条件地在列表下方显示一条消息。...在任一种样式中,模板数据绑定都具有对组件属性相同访问权限。 用* ngFor显示一个列表属性 要显示英雄列表,首先向组件添加英雄名字列表,并将myHero重新定义为列表中第一个名字。...ngFor指令来显示英雄列表中每个项目。...此刻它显示英雄id和name。修正这个问题,只显示英雄name属性。...Dart类,用于为您组件生成模型数据显示该模型属性。 ngIf有条件地显示基于布尔表达式HTML块。

5.3K10

最佳实践:如何扩展你SRS并发能力?

当我们用SRS快速搭建了视频服务,业务也开始上线运行了,很快就会遇到一个问题:如何支持更多的人观看?如何支持更多的人流?...Note:可能你实测数据不同,以上数据是在特定环境结果,包括:流码率,服务器CPU主频和带宽能力,选择协议,SRS版本等差异影响。...如何收更多流能力,一般也叫收流能力,因为流就是指客户端将流推送到SRS,而从SRS角度看就是把客户端流收了提供服务。...因此,扩展能力,比播放扩展能力,对系统挑战是更大。 在监控领域,可能有10万或100万摄像头,如果需要把这些摄像头流全部推送到服务器处理,那这个量级还是非常。...建议把所有业务放一台服务器,比如有些流是指需要出HLS,有些流只需要DVR,有些流只需要FLV,那么这些流就应该分成不同Vhost,送到不同站处理,这样可以避免互相干扰。

1.6K10

AngularDart4.0 指南-体系结构概述 顶

HeroDetailComponent(代码未显示显示关于特定英雄详情,这是用户从HeroListComponent提供列表中选择英雄。...这是告诉Angular这个组件构造函数需要HeroService一种方法,这样它就可以获得显示英雄列表。 ? @Component中数据告诉Angular从哪里获取为组件指定主要构建块。...建筑外包是你必须添加元数据到你代码,以便Angular知道该怎么做。 数据绑定 如果没有框架,您将负责将数据值推送到HTML控件中,并将用户响应转化为操作和值更新。...用手写这样/拉逻辑是单调乏味,容易出错,而且像任何经验丰富jQuery程序员都能证明那样是一场恶梦。 ? Angular支持数据绑定,这是一种协调模板部分与组件部分机制。...依赖注入是一种提供一个类实例方法,它需要完整依赖关系。 大多数依赖是服务。 Angular使用依赖注入来为组件提供他们需要服务。

7.9K30

重大更新!Druid 0.18.0 发布—Join登场,支持Java11

Druid 0.18.0有史以来第一次支持真正Join,Druid 目前支持INNER,LEFT和CROSSjoin。对于原生查询,join作为数据被引入,以表示两个数据Join。...这意味着左侧数据仅允许一个table或另一个join数据。对于右侧数据,lookup,inline,或者query数据是允许。 Druid SQL也支持Join了!...式子查询生成一个常见原因是相等两半类型是否匹配。...最后,将重写查询发送到数据节点以执行topN查询。 查询通道和优先级 当一次运行多个查询时,有时您可能希望根据查询优先级来控制查询资源分配。...(#9622) DruidInputSource可以在重新摄取期间添加尺寸(#9590) 价值计数器溢出错误,而不是写入错误段(#9559) 修复了带有空值数字列上过滤器一些问题(#9251)

2.2K30

“读心术”未来或将改变游戏规则

:NEURABLE Emotiv EPOC实现用思想打字 与VR设备相似,EPOC耳机以及Emotiv公司其他设备使用部署在头骨周围不同位置非侵入性电极收集和读取大脑数据,并将其转化为电脑或其他设备上行动...图:Stanford/YouTube CBI使约会不再需要猜测 大数据算法普及使我们都习惯于与预测算法进行互动。我们浏览过每个画面都将作为网站下一次想为我们提供界面的参考。...起初,病人只能通过用意念保持高或低音调来回答是或不是问题,经过几周训练,他甚至可以拼出句子。...图:Science 第一条使用思想发特 除了打字,随着CBI变得越来越先进,ALS患者甚至已经可以实现玩游戏或滚动浏览社交媒体。...这段时间观察显示了抑郁发作时生物标记,从本质上讲,它们是一个警钟。

36710

IBM Storwize存储品牌退出历史舞台

Storwize阵列未出现在WebCast幻灯片上。Herzog证实Storwize产品线已被替换,通过一条文介绍了情况,“我们所有Spectrum Virtualize产品都有一个平台。”...所以,关于产品线是多是少问题,孰优孰劣其实并不太重要,关键还是要看市场营销表现。...可以将数据送到云以实现业务连续性以及灾难恢复,DevOps,分析等。...而智能化方面,IBM Storage Insights服务监视FlashSystem阵列,每天从每个阵列接收2300万遥测读数,并自动解决多达66%问题。...IBM存储最近几个季度业绩一直不温不火,根据IDC最新数据显示,IBM在2019年第三季度全球外部存储系统市场中位列第四,同比小幅增长1.8%。

81020

深入内存主存:解剖DRAM存储器

关于单元行刷新时机也很有讲究,一般每 64ms 内就要对 cell 阵列进行一次全面刷新,有关“刷新”更多内容这里展开,有兴趣朋友可以查看计算机组成相关内容。...之后放大器把暂存数据送到选择器,同时列地址也会被送到选择器,选择器根据列地址把数据某一位送到输出线。 输出数据之后,还要把单元行数据写回。...读者在阅读时候可能会想到一个问题,即 CPU 在读写数据时候都是面向“字”,而一个 cell 阵列一次只能读取一个比特,那现实世界中存储芯片实际上是如何向 CPU 提供字呢。...本节会解答这个问题。 3.1、bank划分 一个 cell 阵列一次可以提供一个比特,那么多个cell阵列就可以一次提供多个比特。...CPU-Z 软件,显示我有一个内存通道 有仔细看图小伙伴可能发现一个问题,即任务管理器里面的内存频率是 2600+MHz ,而 CPU-Z 却显示内存频率只有 1300+MHz ,这是怎么回事?

78321

AngularDart 4.0 高级-结构指令 顶

Angular不断检查可能会影响数据绑定更改。 无论组件在做什么,它都会继续这样做。 虽然看不见,但组件及其所有后代组件都会占用资源。 性能和记忆负担可能很大,响应性可能会降低,用户什么也看不到。...从积极方面来说,再次显示元素很快。 该组件以前状态被保存并准备显示。 该组件不会重新初始化 - 这种操作可能很昂贵。 所以隐藏和展示有时候是正确。...NgFor指令具有比本指南中显示NgIf更多功能,包括必需和可选。 至少NgFor需要一个循环变量(let hero)和一个列表(heroes)。...如果是这样(并且看起来应该如此),Angular应该如何概括取消其他结构指令能力? 这些问题没有简单答案。 禁止多项结构性指令使得它们没有实际意义。...当NgSwitchCase值与switch值匹配时,会显示宿主元素。当没有同级NgSwitchCase匹配switch值时,NgSwitchDefault显示宿主元素。

16K20

AngularDart 4.0 高级-管道 顶

一旦数据到达,您可以将其原始toString值直接推送到视图中,但这很少能提供良好用户体验。...如果你点击reset按钮,Angular用原有英雄列表替换heroes并更新显示。 如果您添加了删除或更改英雄功能,Angular会检测这些更改并更新显示。...对列表引用没有改变。 这是同一个列表。 这都是Angular关心。 从它角度来看,同样列表,没有变化,没有显示更新。 为了解决这个问题,创建一个英雄列表并将其分配给heroes。...它执行管道并用列表更新显示,其中包括飞行英雄。 如果您更改列表,则不会调用管道,并且不会更新显示; 如果您替换列表,管道将执行并更新显示。...该组件不必订阅异步数据,提取已解析值并将其公开以进行绑定,并且必须在其销毁时取消订阅(内存泄漏有效来源)。 不纯缓存管道 再写一个不纯管道,一个发出HTTP请求管道。

6.3K20

基于WebRTC互动直播实践

,最后,音频和视频数据送到LibRTMP来直接推到我们CDN站。...第五,最重要,在传输方式上,WebRTC使用P2P方式来进行媒体中转,它只是解决端到端问题,而对于互动直播来说,主播数据是非常重要数据,并不仅仅解决主播端音视频互通问题,我们还要把主播数据送到连麦服务器...如上图右边所示,在互动直播SDK中,左边是我们流模块,最下面变成了LibRTMP和连麦库,我们进行连麦操纵时,编码数据送到连麦库推到连麦服务器。那么在连麦过程中,如何去播放另一个主播数据呢?...路径补偿,当然这个数据传输是有限制,大约最高超过WiFi路径20%流量。...我们分为四步来定位这个问题,第一步是收集主播信息,第二步是捕捉卡顿点,第三步是对流链路系统进行数据分析,第四步是进行问题定位。我们会先把主播当时采集帧率、流ID、机型系统等资料进行收集。

2.4K20

Angular 显示英雄列表

在本页面,你将扩展《英雄指南》应用,让它显示一个英雄列表, 并允许用户选择一个英雄,查看该英雄详细信息。 创建模拟(mock)英雄数据 你需要一些英雄数据以供显示。...最终,你会从远端数据服务器获取它。但是目前,你需要创建一些模拟英雄(some mock heroes),并假设这些数据是从远程服务器上获取。...它会为列表中每项数据复写它宿主元素。 在这个例子中  就是 *ngFor 宿主元素 heroes 就是来自 HeroesComponent 类列表。...出现了什么问题?...用户可以选择一个英雄,并查看该英雄详情。 你使用 *ngFor 显示了一个列表。 你使用 *ngIf 来根据条件包含或排除了一段 HTML。 你可以用 class 绑定来切换 CSS 样式类。

4.4K70
领券