Dans le constructeur d'une directive Angular, l'élément DOM cible/hôte est représenté par ElementRef
. C'est la réponse correcte à la question précédente.
ElementRef
est une classe d'encapsulation autour d'un élément DOM natif. Il est utilisé pour manipuler directement les éléments DOM. Fournir un ElementRef
dans le constructeur d'une directive signifie que Angular injecte une référence à l'élément hôte DOM que la directive est attachée à.
Examinez l'exemple de code suivant qui illustre l'utilisation de ElementRef
:
import { Directive, ElementRef } from '@angular/core';
@Directive({
selector: '[appHighlight]'
})
export class HighlightDirective {
constructor(private el: ElementRef) {
el.nativeElement.style.backgroundColor = 'yellow';
}
}
Dans cet exemple, une directive est créée qui change la couleur d'arrière-plan de l'élément hôte en jaune. ElementRef
est injecté dans le constructeur de la directive et est utilisé pour accéder et manipuler directement l'élément DOM.
Il est important de noter que bien que la manipulation directe du DOM via ElementRef
soit possible, elle est généralement déconseillée car elle peut présenter des risques de sécurité comme l'injection de code et elle contrecarre l'abstraction du DOM offerte par l'utilisation des templates Angular. Utilisez plutôt le rendu avec le service approprié ou le Renderer2.
Il est également recommandé de ne pas retourner ElementRef
dans une méthode publique, car cela peut permettre une manipulation abusive du DOM à l'extérieur de la classe.
En résumé, ElementRef
est une classe puissante qui permet la manipulation directe des éléments du DOM dans Angular. Cependant, il doit être utilisé avec précaution pour maintenir l'intégrité du code et la sécurité de l'application.