6-2 Afficher des valeurs avec l'interpolation
Angular maintient un lien entre le gabarit HTML et les propriétés de la classe.
Ainsi, dans le composant App
, la portion {{ title() }}
du gabarit fait directement référence à la propriété title
de la classe App
.
Vous pouvez modifier la balise h1
pour qu'elle ne contienne que {{ title() }}
:
@Component({
selector: 'app-root',
imports: [RouterOutlet],
template: `
<h1>{{ title() }}!</h1>
<router-outlet />
`,
styles: [],
})
export class App {
protected readonly title = signal('Houdini');
}
On appelle ce principe l'interpolation de string. Cela permet d'inclure le contenu d'une variable de type string dans une autre chaine de caractère. Ici, l'autre chaine de caractère est le gabarit HTML et la string à afficher est le contenu de la propriété title
.
Mais pourquoi title()
plutôt que title
?
Lorsque vous appelez la fonction signal()
, le type de retour est WritableSignal<string>
.
title
fait donc référence à l'objet signal lui-même, ce n'est pas ce que nous voulons afficher! Ce que nous voulons afficher est le contenu stocké par cet objet. Pour ce faire, on l'appel comme une fonction (title()
) et c'est ainsi le contenu de la variable qui est retourné.
Remarquez l'utilisation de protected
pour title
.
protected
est un modificateur de portée de la propriété entre public
et private
. Les propriétés protected
sont accessibles par la classe elle-même, les classes qui en hérite, ainsi que le gabarit HTML d'Angular.
Vous pouvez essayer de changer pour private
et Webstorm vous affichera une erreur. Public fonctionnerait aussi, mais ce n'est pas tout à fait souhaité que les classes externes aient accès à cette propriété.
L'utilisation de readonly
empêche de réassigner complètement l'objet signal (pas la valeur):
// Avec readonly
protected readonly title = signal('Houdini');
// Ceci génèrerait une erreur:
this.title = signal('autre chose'); // ❌ Ne peut pas réassigner avec readonly
// Mais on peut quand même changer la valeur!
this.title.set('nouveau titre'); // ✅ Fonctionne!
Anglular par défaut assigne readonly
, mais bien honnêtement, ça frôle l'excès de précaution.
Modifier le titre du composant
Essayez de modifier la valeur de title
dans la classe App
pour la valeur Planificateur de projets Houdini
.
export class App {
protected readonly title = signal('Planificateur de projets Houdini');
}
Observez ensuite le résultat dans votre navigateur, le titre de la page devrait avoir changé en conséquence:

Modification en temps réel
Le lien entre le gabarit HTML et le composant est maintenu en permanence. De ce fait, modifier la valeur de title
dans la classe App
durant l'exécution de l'application aura un effet direct sur la valeur liée au niveau du gabarit HTML
.
Nous verrons plus loin ce lien entre les propriétés de la classe associée au composant et son gabarit.