J'ai lu la référence rapide Angular 1 à 2 sur le site Web Angular , et une chose que je ne comprenais pas complètement était la différence entre ces caractères spéciaux. Par exemple, celui qui utilise des astérisques:
<tr *ngFor="#movie of movies">
<td>{{movie.title}}</td>
</tr>
Je comprends ici que le symbole dièse (#) se définit movie
comme une variable de modèle locale, mais que signifie l'astérisque avant ngFor
? Et, est-ce nécessaire?
Ensuite, sont les exemples qui utilisent des crochets:
<a [routerLink]="['Movies']">Movies</a>
Je comprends un peu que les crochets autour le routerLink
lient à cet attribut HTML / directive angulaire. Cela signifie-t-il qu'ils sont un pointeur pour Angular pour évaluer une expression? Comme [id]="movieId"
serait l'équivalent de id="movie-{{movieId}}"
dans Angular 1?
Enfin, les parenthèses:
<button (click)="toggleImage($event)">
Sont-ils uniquement utilisés pour les événements DOM et pouvons-nous utiliser d'autres événements comme (load)="someFn()"
ou (mouseenter)="someFn()"
?
Je suppose que la vraie question est la suivante: ces symboles ont-ils une signification particulière dans Angular 2, et quelle est la façon la plus simple de savoir quand utiliser chacun d'eux ? Merci!!
bind-
pour[]
eton-
pour()
ou<template [ngFor]>
pour*ngFor
.[ngModel]="foo" (ngModelChange)="foo = $event"
endroit où la première partie met à jour langModel
propriété (@Input() ngModel;
de laNgModel
directive) when
foo` change et la deuxième partie est misefoo
à jour lorsque@Output() ngModelChange;
(de laNgModel
directive) émet un événement.NgModel
est utilisé pour lier des valeurs pour former des éléments et des composants.[(bar)]
peut être utilisé pour n'importe quelle@Input() bar;
@Output() barChange;
combinaison, également de vos propres composants.[prop]="value"
etprop="{{value}}"
autre chose que la syntaxe? Les deux peuvent transmettre une valeur à@Input() value;
in component.[prop]="value"
peut attribuer des valeurs de tout type, seprop="{{value}}"
stringifie toujoursvalue
avant l'affectation et est donc inutile de passer des objets.[]
- Liaison de propriété Unidirectionnelle de la source de données à la cible d'affichage. par exempleNous pouvons utiliser bind- au lieu de
[]
()
-> Liaison d'événement unidirectionnelle de la cible de la vue à la source de donnéesNous pouvons utiliser on- au lieu de ()
[()]
- Banane à reliure bidirectionnelle dans une boîteNous pouvons utiliser bindon- au lieu de
[()]
la source
Comme déjà mentionné, la documentation Angular, en particulier le "tutoriel héros", explique cela plus en profondeur. Voici le lien si vous souhaitez le vérifier .
Les parenthèses sont des événements de l'élément sur lequel vous travaillez, comme le clic sur un bouton comme votre exemple; cela peut également être mousedown, keyup, onselect ou toute action / événement pour cet élément, et ce qui se trouve après le
=
est le nom de la méthode à appeler - en utilisant la parenthèse pour l'appel. Cette méthode doit être définie sur votre classe de composant, c'est-à-dire:Les parenthèses fonctionnent dans l'autre sens. Ils doivent obtenir des données de votre classe - le contraire de la parenthèse qui envoyait l'événement - donc un exemple courant est l'utilisation d'un style comme celui-ci:
Voir? Vous donnez à l'élément un style basé sur votre modèle / classe.
Pour cela, vous auriez pu utiliser ...
La recommandation est que vous utilisiez des doubles accolades pour les choses que vous imprimerez à l'écran comme:
Quoi que vous utilisiez, si vous êtes cohérent, cela contribuera à la lisibilité de votre code.
Enfin, pour votre
*
question, c'est une explication plus longue, mais elle est TRÈS TRÈS importante: elle résume l'implémentation de certaines méthodes que vous auriez autrement à faire pour faire fonctionner unngFor
.Une mise à jour importante est que
ngFor
vous n'utiliserez plus de hachage; vous devez utiliser à lalet
place comme suit:Une dernière chose à mentionner est que tout ce qui précède s'applique également à vos composants, par exemple si vous créez une méthode dans votre composant, elle sera appelée en utilisant
()
:la source