web-dev-qa-db-fra.com

Angulaire: directives vs tuyaux

Quels sont les arguments pour créer et utiliser des directives vs créer et utiliser des tuyaux.

Le scénario dont découle cette question concerne les entrées et sorties de devises.

Si un utilisateur doit entrer une devise, pourquoi ne pas créer/utiliser une directive qui analyse l'entrée dans une chaîne de devises formatée? L'autre option consiste à prendre cette chaîne et à l'afficher à travers un tube comme ceci:

<input type="text" #val (keydown)="currencyVal=val.value" />
<h3>{{currencyVal | currency}}</h3>

vs

// Where mask-money is a directive that filters the 
//input to a formatted currency string
<input type ="text" mask-money (keydown)="currencyVal=val.value" />
<h3>{{currencyVal}}</h3>

D'autre part, un tuyau peut être utilisé dans le contrôleur/composant déclenché par une entrée pour filtrer la valeur.

Je pourrais poser une tonne de questions à ce sujet, mais je veux essentiellement savoir: quels sont les arguments pour chacun?

18
Pezetter

Pour le mettre au point dans les termes les plus simples, je dirais qu'un pipe consiste à manipuler les données , tandis qu'un - directive est plus pour la manipulation DOM .

Un canal obtient des données en entrée, les transforme et sort ces données d'une autre manière.

Une directive obtient un élément DOM auquel elle est "attachée" et l'améliore avec une sorte de fonctionnalités.

Bien sûr, vous trouverez des exemples où les deux ont du sens (prenez en compte le Components et vous avez trois types de structure à choisir) et c'est plutôt une question de préférence que vous choisissez.

Dans votre exemple, vous utiliseriez un tuyau . Supposons que vous souhaitiez afficher la valeur monétaire en gras et utiliser une icône d'image comme symbole monétaire, vous prenez probablement une directive

40
lexith