


Qu'est-ce que la détection des changements ? Parlons du mécanisme de changement d'Angular
Qu'est-ce que la détection des changements ? L'article suivant parlera du mécanisme de détection des changements dans Angular, présentera comment les changements de statut notifient la détection des changements et la stratégie de détection des changements angulaires. J'espère qu'il sera utile à tout le monde.
1. Qu'est-ce que la détection des changements
- Résumé : Un mécanisme de détection des changements utilisé pour parcourir l'arborescence des composants, vérifier les modifications dans chaque composant et détecter les modifications dans les propriétés des composants Lors du déclenchement de la mise à jour de
DOM
. [Recommandations du didacticiel associé : "检测机制
,用于遍历组件树,检查每个组件的变化,并在组件属性发生变化的时候触发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():把脱离的检测器
重新链接
tutoriel angulaire "]
Tâches de base de détection de changement : Obtenez le statut
interne du programme et rendez-le visible
dans l'interface utilisateur. Cet état peut être n’importe quel objet, tableau ou type de données de base.
🎜🎜🎜Événements : clic sur la page, soumission, souris enfoncée...🎜🎜XHR : extrait de le serveur back-end Vers les données 🎜🎜Timers : setTimeout(), setInterval()🎜🎜🎜 Ces points ont une chose en commun, c'est qu'ils sont tous asynchrones, c'est-à-dire toutes les
opérations asynchrones code> peut provoquer des données La cause première du changement, donc chaque fois que certaines opérations asynchrones sont effectuées, l'état de notre application peut changer, et à ce moment, la vue doit être mise à jour 🎜🎜🎜 3. Comment notifier la détection de changement d'état changes 🎜🎜🎜 dans <code>Angular
est connecté à NgZone
, qui écoute tous les événements asynchrones
d'Angular et le réécrira au démarrage (via <. code>Zone.js ) Une partie de l'API du navigateur sous-jacente (intercepte violemment tous les événements asynchrones). 🎜🎜Il existe deux manières courantes de déclencher la détection de changement. Une méthode est basée sur les hooks du cycle de vie des composants🎜rrreee🎜L'autre méthode consiste à contrôler manuellement l'ouverture ou la fermeture de la détection de changement et à la déclencher manuellement🎜rrreee🎜🎜3. détection🎜🎜🎜Le cœur d'Angular est la composantisation. L'imbrication des composants finira par former un arbre de composants
. La détection des changements d'Angular peut être divisée en composants, et chaque composant a un Change DetectorChangeDetector, il est concevable que ces détecteurs de changements forment également un arbre. <br> Dans Angular, chaque composant possède son propre détecteur de changement, ce qui nous permet de contrôler comment et quand la détection de changement est effectuée pour chaque composant. 🎜🎜🎜4. Stratégie de détection des changements🎜🎜🎜Angular donne également aux développeurs la possibilité de personnaliser les stratégies de détection des changements. 🎜🎜🎜par défaut : <code>À chaque fois
la détection de changement entraînera la détection de changement du composant, y compris les changements d'état des autres composants
et des variables de référence de ce composant
Modifications de la valeur d'attribut interne🎜🎜Sur poussée : chaque détection de changement ignorera la vérification des modifications de ce composant à moins que certaines conditions ne soient remplies
🎜🎜🎜🎜4.1 par défaut 🎜🎜🎜Le mécanisme de détection des changements par défaut d'Angular est ChangeDetectionStrategy.Default
Après la fin de chaque rappel d'événement asynchrone, NgZone déclenchera l'arborescence entière des composants
Top-. down
Détection des changements🎜🎜🎜4.2 <span style="font-size: 18px;">onPush</span> span>
🎜🎜🎜Stratégie OnPush, utilisée pour ignorer
la détection de changement d'un certain composant et de tous les sous-composants
en dessous🎜🎜En fait, OnPush
, il existe encore de nombreuses façons de déclencher la détection de changement 🎜🎜🎜1) La référence
de l'attribut @Input
du composant change ; 🎜🎜2) Événements DOM
au sein du composant, y compris les événements DOM de ses sous-composants, tels que cliquez, soumettez, appuyez sur la souris
. 🎜🎜3) Observable
dans le composant s'abonne aux événements et définit le Async pipe
en même temps. 🎜🎜4) Utilisez manuellement les méthodes ChangeDetectorRef.detectChanges(), ChangeDetectorRef.markForCheck(), ApplicationRef.tick()
dans le composant 🎜🎜🎜🎜 5. Changer la référence de l'objet de détection 🎜🎜🎜🎜markForCheck () : Utilisé pour les sous-composants
pour marquer le chemin entre le sous-composant et le composant racine
, et notifier au détecteur angulaire de certainement
lors du prochain changement détection >Vérifiez les composants sur ce chemin, même si la stratégie de détection des changements est définie sur onPush
🎜🎜detectChanges() : lancez manuellement la détection des changements de ce composant vers chaque sous-composant
🎜🎜detach() : Détachez le détecteur du composant
du nombre de détecteurs. Il n'est plus contrôlé par le mécanisme de détection à moins d'être reconnecté. 🎜🎜reattach() : Reconnectez le détecteur détaché <.>Accédez à l'arborescence des détecteurs🎜🎜🎜Pour plus de connaissances sur la programmation, veuillez visiter : 🎜Vidéo de programmation🎜 ! ! 🎜</.>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Angular.js est une plateforme JavaScript librement accessible pour créer des applications dynamiques. Il vous permet d'exprimer rapidement et clairement divers aspects de votre application en étendant la syntaxe HTML en tant que langage de modèle. Angular.js fournit une gamme d'outils pour vous aider à écrire, mettre à jour et tester votre code. De plus, il offre de nombreuses fonctionnalités telles que le routage et la gestion des formulaires. Ce guide expliquera comment installer Angular sur Ubuntu24. Tout d’abord, vous devez installer Node.js. Node.js est un environnement d'exécution JavaScript basé sur le moteur ChromeV8 qui vous permet d'exécuter du code JavaScript côté serveur. Être à Ub

Cet article vous amènera à continuer à apprendre Angular et à comprendre brièvement le composant autonome (Standalone Component) dans Angular. J'espère qu'il vous sera utile !

Cet article vous donnera une compréhension approfondie du gestionnaire d'état NgRx d'Angular et vous présentera comment utiliser NgRx. J'espère qu'il vous sera utile !

Comment utiliser monaco-editor en angulaire ? L'article suivant enregistre l'utilisation de monaco-editor dans angulaire qui a été utilisé dans une entreprise récente. J'espère qu'il sera utile à tout le monde !

Connaissez-vous Angular Universel ? Cela peut aider le site Web à fournir un meilleur support SEO !

Cet article partagera avec vous une expérience pratique d'Angular et apprendra comment développer rapidement un système backend en utilisant Angualr combiné avec ng-zorro. J'espère que cela sera utile à tout le monde !

Avec le développement rapide d'Internet, la technologie de développement front-end s'améliore et se répète constamment. PHP et Angular sont deux technologies largement utilisées dans le développement front-end. PHP est un langage de script côté serveur capable de gérer des tâches telles que le traitement des formulaires, la génération de pages dynamiques et la gestion des autorisations d'accès. Angular est un framework JavaScript qui peut être utilisé pour développer des applications monopage et créer des applications Web composées de composants. Cet article explique comment utiliser PHP et Angular pour le développement front-end et comment les combiner.

Le comportement d'affichage par défaut des composants du framework Angular ne concerne pas les éléments au niveau du bloc. Ce choix de conception favorise l'encapsulation des styles de composants et encourage les développeurs à définir consciemment la manière dont chaque composant est affiché. En définissant explicitement l'affichage des propriétés CSS, l'affichage des composants angulaires peut être entièrement contrôlé pour obtenir la mise en page et la réactivité souhaitées.
