Parfois, vous avez besoin de manipuler directement un élément HTML (changer sa couleur, le faire bouger, etc). En Angular, on évite d'utiliser document.getElementById(). On utilise la "Télécommande" : viewChild() (l'équivalent de useRef en React).
Ces boutons utilisent viewChild pour cibler et modifier directement l'élément HTML à droite.
On ajoute un hashtag (une référence locale) sur l'élément qu'on veut piloter.
<div #maCible> ... </div> On utilise viewChild() pour récupérer l'élément. Comme ça retourne un Signal, on l'appelle avec des parenthèses ().
cible = viewChild<ElementRef>('maCible');
// Pour l'utiliser :
this.cible()?.nativeElement.style.color = 'red'; import { Component, ElementRef, viewChild } from '@angular/core';
@Component({
selector: 'app-parent',
template: `
<!-- L'élément cible porte le #userInfo -->
<div #userInfo>En attente...</div>
<button (click)="afficherNom()">Modifier la Div</button>
`
})
export class ParentComponent {
// On connecte la télécommande au "#userInfo"
infoElement = viewChild<ElementRef>('userInfo');
afficherNom() {
// On lit le signal () pour obtenir l'élément HTML
const element = this.infoElement();
if (element) {
// On le manipule comme du JS classique !
element.nativeElement.style.backgroundColor = 'blue';
element.nativeElement.style.color = 'white';
element.nativeElement.textContent = "Je suis John Doe !";
}
}
}