我正在编写一个具有属性Mode():string
的角度组件。
我希望能够以编程方式设置此属性,而不是响应任何事件。
问题是在没有浏览器事件的情况下,模板绑定{{Mode}}
不会更新。
是否有办法手动触发此更改检测?
我可以用markForCheck()更新它
导入ChangeDetectorRef
import { ChangeDetectorRef } from '@angular/core';
注入并实例化它
constructor(private ref: ChangeDetectorRef) {
}
最后标记要进行的更改检测
this.ref.markForCheck();
下面是一个markForCheck()工作而detectChanges()不工作的示例。
https://plnkr.co/edit/RfJwHqEVJcMU9ku9XNE7?p=preview
编辑:这个例子不再描述这个问题了:(我相信它可能运行一个新的角度版本,在那里它是固定的。
(按停止/运行再次运行)
我使用了公认的答案参考,并想举一个例子,因为Angular 2文档很难阅读,我希望这更容易:
>
导入NgZone
:
import { Component, NgZone } from '@angular/core';
将其添加到类构造函数中
constructor(public zone: NgZone, ...args){}
用zone.run
运行代码:
this.zone.run(() => this.donations = donations)
请尝试以下方法之一:
ApplicationRef.tick()
-类似于AngularJS的$rootScope.$digest()
——即检查完整的组件树您可以将ApplicationRef
、NgZone
或ChangeDetectorRef
注入组件。
问题内容: 当前,我们可以通过几种方式监视数据更改。我们可以使用触发模型更改,并且可以向元素添加指令并对其绑定一些操作。 在许多情况下,这有点令人困惑,所以我很好奇,这是每个变体的优缺点,何时应该使用绑定,何时使用诸如?的指令? 问题答案: 两者和具有完全不同的用法: 假设您有一个在范围内定义的模型: 现在,如果您想在发生任何更改时执行某些操作,则可以使用: 是一个指令,当用户更改输入时将评估给定
我有一个父组件(CategoryComponent)、一个子组件(videoListComponent)和一个APIService。 我的大部分工作都很好,即每个组件都可以访问json api,并通过Observables获取其相关数据。 当前video list组件只获取所有视频,我想将其筛选为特定类别中的视频,我通过将categoryId传递给子对象实现了这一点。 CategoryCompon
问题内容: 我有一个输入,可以根据更改过滤ng-repeat列表。重复数据包含大量数据,并且需要花费几秒钟来过滤所有内容。我希望他们在开始过滤过程之前有0.5秒的延迟。 产生延迟的正确方法是什么? 输入项 重复 过滤功能 谢谢 问题答案: AngularJS 1.3+ 从AngularJS 1.3开始,您可以利用提供的属性轻松实现这一点,而无需使用。这是一个例子: HTML: JS: - 要么 -
本文向大家介绍python检测IP地址变化并触发事件,包括了python检测IP地址变化并触发事件的使用技巧和注意事项,需要的朋友参考一下 IoT PoC项目中需要展示视频采集源进行wifi切换后(表明视频采集源端发生了移动),接收端观看到的视频的流畅度,以及当接收端进行移动时,检测视频的流畅度,故需要一个模块周期性地探测本地IP是否变化,以指示设备的移动性。 操作:当设备做为视频接受者发生移动时
问题内容: 我有一个使用ajax请求检索对象数组的父组件。 该组件有两个子组件:一个子组件以树结构显示对象,另一个子组件以表格格式呈现其内容。父级通过@input属性将数组传递给其子级,它们会正确显示内容。一切都如预期。 当您更改对象内的某些字段时,会发生问题:子组件不会收到有关这些更改的通知。仅当您手动将数组重新分配给它的变量时,才会触发更改。 我已经习惯了使用Knockout JS,并且需要获
我有一个角度组件,它有一个输入< code>Person 在这个组件的父组件中,如果我替换了作为子组件输入的对象,