Control Flow
Le Control Flow, câest le fait de contrĂŽler dynamiquement lâaffichage des Ă©lĂ©ments de nos templates.
Conditionner avec @if
@if
permet dâafficher ou non un Ă©lĂ©ment en fonction dâune condition.
Par exemple, imaginons ce header :
<header>
<h1>Mon site</h1>
<button>Se connecter</button>
<button>Mon compte</button>
</header>
Ici, cela nâa pas de sens dâavoir le bouton de connexion et le bouton âmon compteâ en mĂȘme temps. On va donc conditionner leur affichage en fonction de lâĂ©tat de lâutilisateur.
<header>
<h1>Mon site</h1>
@if (!isConnected) {
<button>Se connecter</button>
} @else {
<button>Mon compte</button>
}
</header>
GrĂące Ă @if
, jâaffiche le bouton âSe connecterâ si lâutilisateur nâest pas connectĂ© et le bouton âMon compteâ si lâutilisateur est connectĂ©.
Boucler avec @for
@for
permet de boucler sur un Iterable
(le plus souvent un tableau) pour afficher une liste dâĂ©lĂ©ments.
Par exemple, imaginons une liste de tĂąches :
export class TasksComponent {
tasks: Task[] = [
{
id: 1,
title: "Apprendre Angular",
done: true,
},
{
id: 2,
title: "Rejoindre le Discord de Bonjour Angular",
done: true,
},
{
id: 3,
title: "Centrer une div",
done: false,
},
];
}
On peut alors afficher la liste des tĂąches :
<ul>
@for (task of tasks; track task.id) {
<li>{{ task.title }}</li>
} @empty {
<li>Aucune tĂąche</li>
}
</ul>
Switcher avec @switch
@switch
permet dâafficher un Ă©lĂ©ment en fonction dâune valeur.
Par exemple, imaginons un composant UserComponent
qui affiche un utilisateur :
export class UserComponent {
user: User = {
id: 1,
role: "teacher",
};
}
On peut alors afficher lâĂąge de lâutilisateur en fonction de sa valeur :
<p>
@switch (user.role) { @case('student') {
<span>Vous ĂȘtes un.e Ă©tudiant.e</span>
} @case('teacher') {
<span>Vous ĂȘtes un.e enseignant.e</span>
} @case('director') {
<span>Vous ĂȘtes un.e directeur.rice</span>
} @default {
<span>Vous ĂȘtes un.e inconnu.e</span>
} }
</p>