当前位置: 首页 > 知识库问答 >
问题:

手动触发角度变化检测

鲜于星波
2023-03-14

我正在编写一个具有属性Mode():string的角度组件

我希望能够以编程方式设置此属性,而不是响应任何事件。

问题是在没有浏览器事件的情况下,模板绑定{{Mode}}不会更新。

是否有办法手动触发此更改检测?

共有3个答案

伏德义
2023-03-14

我可以用markForCheck()更新它

导入ChangeDetectorRef

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

注入并实例化它

constructor(private ref: ChangeDetectorRef) { 
}

最后标记要进行的更改检测

this.ref.markForCheck();

下面是一个markForCheck()工作而detectChanges()不工作的示例

https://plnkr.co/edit/RfJwHqEVJcMU9ku9XNE7?p=preview

编辑:这个例子不再描述这个问题了:(我相信它可能运行一个新的角度版本,在那里它是固定的。

(按停止/运行再次运行)

楚良平
2023-03-14

我使用了公认的答案参考,并想举一个例子,因为Angular 2文档很难阅读,我希望这更容易:

>

  • 导入NgZone

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

    将其添加到类构造函数

    constructor(public zone: NgZone, ...args){}
    

    zone.run运行代码:

    this.zone.run(() => this.donations = donations)
    

  • 东门胤
    2023-03-14

    请尝试以下方法之一:

    • ApplicationRef.tick()-类似于AngularJS的$rootScope.$digest()——即检查完整的组件树

    您可以将ApplicationRefNgZoneChangeDetectorRef注入组件。

     类似资料:
    • 问题内容: 当前,我们可以通过几种方式监视数据更改。我们可以使用触发模型更改,并且可以向元素添加指令并对其绑定一些操作。 在许多情况下,这有点令人困惑,所以我很好奇,这是每个变体的优缺点,何时应该使用绑定,何时使用诸如?的指令? 问题答案: 两者和具有完全不同的用法: 假设您有一个在范围内定义的模型: 现在,如果您想在发生任何更改时执行某些操作,则可以使用: 是一个指令,当用户更改输入时将评估给定

    • 我有一个父组件(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 在这个组件的父组件中,如果我替换了作为子组件输入的对象,