Revoir le live Angular du 16 octobre

Anticipez le futur avec Signal Forms d'Angular

Angular 21 introduira Signal Forms, une nouvelle API expérimentale qui simplifiera radicalement la gestion des formulaires.

Basée sur les signaux, elle permettra :

  • de créer des formulaires déclaratifs avec form()
  • de lier directement les champs avec [field]
  • d'intégrer facilement les validations et la soumission
  • et de réduire le boilerplate tout en améliorant les performances
Skip to content

Vous souhaitez recevoir de l'aide sur ce sujet ? rejoignez la communauté Angular.fr sur Discord.

Comment créer ma propre directive structurelle sur Angular ?

Pour créer une directive structurelle avec TemplateRef et ViewContainer sur Angular, vous devrez suivre les étapes suivantes :

  1. Définissez votre directive en utilisant la décorateur @Directive:
ts
import { Directive, TemplateRef, ViewContainerRef, inject } from '@angular/core';

@Directive({
  selector: '[myStructuralDirective]',
  standalone: true
})
export class MyStructuralDirective {
  private templateRef = inject(TemplateRef);
  private viewContainer = inject(ViewContainerRef);
}

Les injections TemplateRef et ViewContainerRef vous permettent d'accéder au template et au conteneur de vue de l'élément sur lequel la directive est appliquée. Utilisez donc ces propriétés pour manipuler le contenu du template et du conteneur de vue. Par exemple, pour ajouter le contenu du template au conteneur de vue, vous pouvez utiliser la méthode createEmbeddedView du conteneur de vue:

ts
this.viewContainer.createEmbeddedView(this.templateRef);

Vous pouvez également utiliser les méthodes clear et insert du conteneur de vue pour supprimer ou insérer du contenu dans le conteneur de vue.

Pour utiliser votre directive, vous pouvez l'appliquer sur un élément de votre template de la manière suivante:

html
<div [myStructuralDirective]>
  Contenu de mon template
</div>

Ceci est un exemple simple de création d'une directive structurelle avec TemplateRef et ViewContainerRef. Vous pouvez également utiliser d'autres propriétés et méthodes de ces classes pour plus de flexibilité et de contrôle sur votre directive.