Les directives
Les modèles Angular sont dynamiques.
Quand Angular les rend, il transforme le DOM selon les instructions données par les directives.
Une directive est une classe avec un décorateur
@Directive()
.
Un composant est techniquement une directive.
Cependant, les composants sont si distinctifs et essentiels dans les applications Angular qu'il définit
le décorateur
@Component()
, qui étend le décorateur
@Directive()
avec des fonctionnalités orientées modèles.
Outre les composants, il existe deux autres types de directives: structurelles et d'attribut.
Angular définit un certain nombre de directives des deux types, et vous pouvez définir les vôtres à l'aide du décorateur
@Directive()
.
Tout comme pour les composants, les métadonnées d'une directive associent la classe décorée à un élément sélecteur que vous utilisez pour l'insérer en HTML.
Dans les modèles, les directives apparaissent généralement dans une balise d'élément sous forme d'attributs, soit par nom, soit comme cible d'une affectation ou d'une liaison.
Directives structurelles
Les directives structurelles modifient la disposition en ajoutant, en supprimant et en remplaçant des éléments dans le DOM.
L'exemple de modèle utilise deux directives structurelles intégrées pour ajouter une logique d'application au rendu de la vue.
*ngFor
est itérative; Angular doit supprimer un ‹li›
par héros dans la liste des héros.
*ngIf
est conditionnel; Angular inclut le composant HeroDetail
uniquement s'il existe un héros sélectionné.
Attributs de directives
Les directives d'attribut modifient l'apparence ou le comportement d'un élément existant.
Dans les modèles, ils ressemblent à des attributs HTML normaux, d'ou leur nom.
La directive
ngModel
, qui implémente la liaison de données bidirectionnelle (wo-way data binding), est un exemple de directive d'attribut.
ngModel
modifie le comportement d'un élément existant (généralement
‹input›
) en définissant sa propriété de valeur d'affichage
et en répondant aux événements de modification.
Angular a davantage de directives prédéfinies qui modifient la structure de présentation (par exemple,
ngSwitch
)
ou modifient des aspects d'éléments et de composants DOM (par exemple,
ngStyle
et
ngClass
).