He estado leyendo la referencia rápida de Angular 1 a 2 en el sitio web de Angular , y una cosa que no entendí completamente fue la diferencia entre estos caracteres especiales. Por ejemplo, uno que usa asteriscos:
<tr *ngFor="#movie of movies">
<td>{{movie.title}}</td>
</tr>
Entiendo aquí que el símbolo hash (#) se define movie
como una variable de plantilla local, pero ¿qué significa el asterisco antes ngFor
? ¿Y es necesario?
A continuación, están los ejemplos que usan corchetes:
<a [routerLink]="['Movies']">Movies</a>
De alguna manera entiendo que los corchetes alrededor lo routerLink
unen a ese atributo HTML / directiva angular. ¿Significa esto que son un puntero para que Angular evalúe una expresión? Como [id]="movieId"
sería el equivalente de id="movie-{{movieId}}"
en Angular 1?
Por último, hay paréntesis:
<button (click)="toggleImage($event)">
¿Se usan solo para eventos DOM y podemos usar otros eventos como (load)="someFn()"
o (mouseenter)="someFn()"
?
Supongo que la verdadera pregunta es, ¿tienen estos símbolos un significado especial en Angular 2, y cuál es la forma más fácil de saber cuándo usar cada uno ? ¡¡Gracias!!
bind-
por[]
yon-
para()
o<template [ngFor]>
para*ngFor
.[ngModel]="foo" (ngModelChange)="foo = $event"
donde la primera parte actualiza langModel
propiedad (@Input() ngModel;
de laNgModel
directiva) when
foo` cambia y la segunda parte se actualizafoo
cuando la@Output() ngModelChange;
(de laNgModel
directiva) emite un evento.NgModel
Se usa para unir valores para formar elementos y componentes.[(bar)]
Se puede usar para cualquier@Input() bar;
@Output() barChange;
combinación, también de sus propios componentes.[prop]="value"
yprop="{{value}}"
cualquier otra cosa que la sintaxis? Ambos pueden pasar valor a@Input() value;
en componente.[prop]="value"
puede asignar valores de cualquier tipo,prop="{{value}}"
siempre se encadenavalue
antes de la asignación y, por lo tanto, no sirve para pasar objetos.[]
- Enlace de propiedad Unidireccional desde el origen de datos para ver el destino. p.ejPodemos usar bind- en lugar de
[]
()
-> Enlace de eventos Unidireccional desde el objetivo de la vista al origen de datosPodemos usar on- en lugar de ()
[()]
- Banana vinculante bidireccional en una cajaPodemos usar bindon- en lugar de
[()]
fuente
Como ya se mencionó, la documentación angular, especialmente el "tutorial del héroe", explica esto más profundamente. Aquí está el enlace si quieres verlo .
Los paréntesis son eventos del elemento en el que está trabajando, como hacer clic en un botón como su ejemplo; esto también podría ser mousedown, keyup, onselect o cualquier acción / evento para ese elemento, y lo que sigue
=
es el nombre del método a llamar, usando el paréntesis para la llamada. Ese método debe definirse en su clase de componente, es decir:Los corchetes funcionan a la inversa. Deben obtener datos de su clase, lo opuesto al paréntesis que enviaba el evento, por lo que un ejemplo común es el uso de un estilo como este:
¿Ver? Le está dando al elemento un estilo basado en su modelo / clase.
Para esto podrías haber usado ...
La recomendación es que use llaves dobles para las cosas que imprimirá en la pantalla, como:
Independientemente de lo que use, si es coherente, ayudará a la legibilidad de su código.
Por último, para su
*
pregunta, es una explicación más larga, pero es MUY importante: abstrae la implementación de algunos métodos que, de lo contrario, tendría que hacer parangFor
que funcione.Una actualización importante es que
ngFor
ya no usarás hash; debes usarlo de lalet
siguiente manera:Una última cosa que vale la pena mencionar es que todo lo anterior se aplica también a sus componentes, por ejemplo, si crea un método en su componente, se llamará usando
()
:fuente