


Was ist Änderungserkennung? Lassen Sie uns über den Änderungsmechanismus von Angular sprechen
Was ist Änderungserkennung? Im folgenden Artikel geht es um den Änderungserkennungsmechanismus in Angular, es wird vorgestellt, wie Statusänderungen die Änderungserkennung benachrichtigen, und ich hoffe, dass er für alle hilfreich ist.
1. Was ist Änderungserkennung
- Zusammenfassung: Ein Änderungserkennungsmechanismus , der zum Durchlaufen des Komponentenbaums, zum Überprüfen von Änderungen in jeder Komponente und zum Erkennen von Änderungen in Komponenteneigenschaften beim Auslösen der Aktualisierung von verwendet wird
DOM
. [Verwandte Tutorial-Empfehlungen: „检测机制
,用于遍历组件树,检查每个组件的变化,并在组件属性发生变化的时候触发DOM
的更新。【相关教程推荐:《angular教程》】 - 变更检测的基本任务: 获得程序的内部
状态
并使之在用户界面可见
。这个状态可以是任何的对象、数组、基本数据类型。
二、什么引起了变更
事件驱动,来源有以下三大类:
- 事件:页面 click、submit、mouse down……
- XHR:从后端服务器拿到数据
- Timers:setTimeout()、setInterval()
这几点有一个共同点,就是它们都是异步的,也就是说,所有的异步操作
是可能导致数据变化的根源因素,所以每当执行一些异步操作时,我们的应用程序状态可能发生改变,而这时则需要去更新视图
三、状态变化怎么通知变更检测
在Angular
当中则接入了NgZone
,由它来监听Angular所有的异步事件
,Angular 在启动时会重写(通过 Zone.js
)部分底层浏览器 API(暴力的拦截了所有的异步事件)。
常见的有两种方式来触发变化检测,一种方法是基于组件的生命周期钩子
ngAfterViewChecked() { console.log('cluster-master.component cd'); }
另一种方法是手动控制变化检测的打开或者关闭,并手动触发
constructor(private cd: ChangeDetectorRef) { cd.detach() setInterval(() => { this.cd.detectChanges() }, 5000) }
三、Angular 变更检测
Angular 的核心是组件化,组件的嵌套会使得最终形成一棵组件树
,Angular 的变化检测可以分组件进行,每个组件都有对应的变化检测器 ChangeDetector
,可想而知这些变化检测器也会构成一棵树。
在 Angular 中每个组件都有自己的变化检测器,这使得我们可以对每个组件分别控制如何以及何时进行变更检测。
四、变更检测策略
Angular还让开发者拥有定制变化检测策略的能力。
- default:
每次
变更检测都会引起组件的变更检测,包括其他组件
的状态变化,以及本组件
引用型变量内部属性值变化 - Onpush: 每次变更检测会跳过本组件的变更检查,除非
满足一些条件
4.1 default
Angular 默认的变化检测机制是 ChangeDetectionStrategy.Default
,每次异步事件 callback 结束后,NgZone会触发整个组件树
至上而下
做变化检测
4.2 <span style="font-size: 18px;">onPush</span>
OnPush 策略,用以跳过
某个 component 以及它下面所有子组件
的变化检测
其实在设置了 OnPush
策略以后,还是有许多方法可以触发变更检测的;
- 1)组件的
@Input
属性的引用
发生变化。 - 2)组件内的
DOM
事件,包括它子组件的 DOM 事件,比如click、submit、mouse down
。 - 3)组件内的
Observable
订阅事件,同时设置Async pipe
。 - 4)组件内手动使用
ChangeDetectorRef.detectChanges()、ChangeDetectorRef.markForCheck()、ApplicationRef.tick()
方法
五、变化检测对象引用
- markForCheck():使用于
子组件
,将该子组件到根组件
之间的路径标记起来,通知 angular 检测器下次变化检测时一定
检查此路径上的组件,即使设置了变化检测策略为onPush
- detectChanges():手动发起
该组件到各个子组件
的变更检测 - detach():将组件的检测器从检测器数中
脱离
,不再受检测机制的控制,除非重新 attach 上 - reattach():把脱离的检测器
重新链接
Angular Tutorial “]
Grundlegende Aufgaben der Änderungserkennung: Ermitteln Sie den internen Status
des Programms und machen Sie ihn in der Benutzeroberfläche sichtbar
. Dieser Zustand kann ein beliebiges Objekt, Array oder Basisdatentyp sein.
asynchrone Operationen Code> kann dazu führen, dass Daten die Hauptursache für Änderungen sind. Wenn also einige asynchrone Vorgänge ausgeführt werden, kann sich der Status unserer Anwendung ändern. Zu diesem Zeitpunkt muss die Ansicht aktualisiert werden 🎜🎜🎜 3. So benachrichtigen Sie die Statusänderungserkennung Änderungen 🎜🎜🎜 in <code>Angular
ist mit NgZone
verbunden, das alle asynchronen Ereignisse
von Angular abhört, wenn es startet (bis Zone.js ) Teil der zugrunde liegenden Browser-API (fängt alle asynchronen Ereignisse gewaltsam ab). 🎜🎜Es gibt zwei gängige Methoden, um die Änderungserkennung auszulösen. Eine Methode basiert auf Komponentenlebenszyklus-Hooks. Die andere Methode besteht darin, das Öffnen oder Schließen der Änderungserkennung manuell zu steuern und sie manuell auszulösen Erkennung🎜🎜🎜Der Kern von Angular ist die Komponentisierung. Die Verschachtelung von Komponenten bildet schließlich einen Komponentenbaum
, der in Komponenten unterteilt werden kann, und jede Komponente verfügt über einen entsprechenden Change DetectorChangeDetector ist es denkbar, dass diese Änderungsdetektoren auch einen Baum bilden. <br> In Angular verfügt jede Komponente über einen eigenen Änderungsdetektor, mit dem wir steuern können, wie und wann die Änderungserkennung für jede Komponente durchgeführt wird. 🎜🎜🎜4. Strategie zur Änderungserkennung🎜🎜🎜Angular bietet Entwicklern auch die Möglichkeit, Strategien zur Änderungserkennung anzupassen. 🎜🎜🎜Standard: <code>Jedes Mal
führt die Änderungserkennung zu einer Änderungserkennung der Komponente, einschließlich Statusänderungen von anderen Komponenten
und dieser Komponente
-Referenzvariablen Interne Attributwertänderungen🎜🎜Onpush: Bei jeder Änderungserkennung wird die Änderungsprüfung dieser Komponente übersprungen, es sei denn einige Bedingungen sind erfüllt
🎜🎜🎜🎜4.1 Standard 🎜🎜🎜Angulars standardmäßiger Änderungserkennungsmechanismus ist ChangeDetectionStrategy.Default
. Nach dem Ende jedes asynchronen Ereignisrückrufs löst NgZone den gesamten Komponentenbaum
aus. down
Änderungserkennung durchführen🎜🎜🎜4.2 <span style="font-size: 18px;">onPush</span> span>
🎜🎜🎜OnPush-Strategie, die verwendet wird, um die Änderungserkennung einer bestimmten Komponente und aller Unterkomponenten
darunter zu überspringen
🎜🎜Tatsächlich OnPush
-Strategie, es gibt immer noch viele Möglichkeiten, die Änderungserkennung auszulösen; 🎜🎜🎜1) Die Referenz
des @Input
-Attributs der Komponente ändert sich. 🎜🎜2) DOM
-Ereignisse innerhalb der Komponente, einschließlich DOM-Ereignisse ihrer Unterkomponenten, wie z. B. Klick, Senden, Maus nach unten
. 🎜🎜3) Observable
in der Komponente abonniert Ereignisse und legt gleichzeitig die Async-Pipe
fest. 🎜🎜4) Verwenden Sie manuell die Methoden ChangeDetectorRef.detectChanges(), ChangeDetectorRef.markForCheck(), ApplicationRef.tick()
in der Komponente 🎜🎜🎜🎜 5. Ändern Sie die Erkennungsobjektreferenz 🎜🎜🎜🎜markForCheck () : Wird für Unterkomponenten
verwendet, um den Pfad zwischen der Unterkomponente und der Stammkomponente
zu markieren und dem Winkeldetektor beim nächsten Mal mitzuteilen, dass er sicherlich
ist erkennt Änderungen. >Überprüfen Sie die Komponenten auf diesem Pfad, auch wenn die Änderungserkennungsstrategie auf onPush
eingestellt ist 🎜🎜detectChanges(): Initiieren Sie manuell die Änderungserkennung von dieser Komponente zu jeder Unterkomponente🎜🎜detach(): <code>Den Detektor der Komponente trennen
Er wird nicht mehr vom Erkennungsmechanismus gesteuert, es sei denn, er wird wieder angeschlossen. 🎜🎜reattach(): Den abgetrennten Detektor wieder anschließen
Gehen Sie zum Detektorbaum🎜🎜🎜Weitere Kenntnisse zum Thema Programmierung finden Sie unter: 🎜Programmiervideo🎜! ! 🎜Das obige ist der detaillierte Inhalt vonWas ist Änderungserkennung? Lassen Sie uns über den Änderungsmechanismus von Angular sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Angular.js ist eine frei zugängliche JavaScript-Plattform zum Erstellen dynamischer Anwendungen. Es ermöglicht Ihnen, verschiedene Aspekte Ihrer Anwendung schnell und klar auszudrücken, indem Sie die Syntax von HTML als Vorlagensprache erweitern. Angular.js bietet eine Reihe von Tools, die Sie beim Schreiben, Aktualisieren und Testen Ihres Codes unterstützen. Darüber hinaus bietet es viele Funktionen wie Routing und Formularverwaltung. In dieser Anleitung wird erläutert, wie Angular auf Ubuntu24 installiert wird. Zuerst müssen Sie Node.js installieren. Node.js ist eine JavaScript-Ausführungsumgebung, die auf der ChromeV8-Engine basiert und es Ihnen ermöglicht, JavaScript-Code auf der Serverseite auszuführen. In Ub sein

Dieser Artikel wird Sie dabei unterstützen, Angular weiter zu lernen und die eigenständige Komponente (Standalone Component) in Angular kurz zu verstehen. Ich hoffe, er wird Ihnen hilfreich sein!

Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis des Angular-Statusmanagers NgRx und stellt Ihnen die Verwendung von NgRx vor. Ich hoffe, er wird Ihnen hilfreich sein!

Wie verwende ich den Monaco-Editor in Angular? Der folgende Artikel dokumentiert die Verwendung des Monaco-Editors in Angular, der kürzlich in einem Unternehmen verwendet wurde. Ich hoffe, dass er für alle hilfreich sein wird!

Kennen Sie Angular Universal? Es kann dazu beitragen, dass die Website eine bessere SEO-Unterstützung bietet!

In diesem Artikel erfahren Sie, wie Sie mit Angular in Kombination mit ng-zorro schnell ein Backend-System entwickeln. Ich hoffe, dass er für alle hilfreich ist.

Mit der rasanten Entwicklung des Internets wird auch die Front-End-Entwicklungstechnologie ständig verbessert und iteriert. PHP und Angular sind zwei Technologien, die in der Frontend-Entwicklung weit verbreitet sind. PHP ist eine serverseitige Skriptsprache, die Aufgaben wie die Verarbeitung von Formularen, die Generierung dynamischer Seiten und die Verwaltung von Zugriffsberechtigungen übernehmen kann. Angular ist ein JavaScript-Framework, mit dem Single-Page-Anwendungen entwickelt und komponentenbasierte Webanwendungen erstellt werden können. In diesem Artikel erfahren Sie, wie Sie PHP und Angular für die Frontend-Entwicklung verwenden und wie Sie diese kombinieren

Das Standardanzeigeverhalten für Komponenten im Angular-Framework gilt nicht für Elemente auf Blockebene. Diese Designwahl fördert die Kapselung von Komponentenstilen und ermutigt Entwickler, bewusst zu definieren, wie jede Komponente angezeigt wird. Durch explizites Festlegen der CSS-Eigenschaft display kann die Anzeige von Angular-Komponenten vollständig gesteuert werden, um das gewünschte Layout und die gewünschte Reaktionsfähigkeit zu erreichen.
