Depuis Angular 17, une nouvelle syntaxe native très propre existe pour afficher ou masquer du HTML : @if. Elle remplace l'ancienne directive *ngIf.
alice@example.com
En ligne@if (user) {
<div>Bienvenue {{ user.name }}</div>
} @else {
<div>Veuillez vous connecter</div>
}<div *ngIf="user; else noUser">
Bienvenue {{ user.name }}
</div>
<ng-template #noUser>
<div>Veuillez vous connecter</div>
</ng-template>import { Component } from '@angular/core';
@Component({
selector: 'app-user',
template: `
<button (click)="toggleLogin()">
{{ user ? 'Déconnexion' : 'Connexion' }}
</button>
<hr>
<!-- L'affichage conditionnel gère la visibilité -->
@if (user) {
<h3>Profil de {{ user.name }}</h3>
} @else {
<p>Accès refusé.</p>
}
`
})
export class UserComponent {
// user vaut soit un Objet, soit null
user: any = { name: 'Alice', email: 'alice@example.com' };
toggleLogin() {
if (this.user) {
this.user = null; // On vide l'utilisateur
} else {
this.user = { name: 'Alice', email: 'alice@example.com' }; // On le recrée
}
}
}