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 moviecomo 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 routerLinkunen 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 langModelpropiedad (@Input() ngModel;de laNgModeldirectiva) whenfoo` cambia y la segunda parte se actualizafoocuando la@Output() ngModelChange;(de laNgModeldirectiva) emite un evento.NgModelSe 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 encadenavalueantes 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 parangForque funcione.Una actualización importante es que
ngForya no usarás hash; debes usarlo de laletsiguiente 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