reactivos hacer formularios formulario form crear contacto como angular

hacer - ¿Cuál es la diferencia entre paréntesis, corchetes y asteriscos en Angular2?



formularios reactivos en angular (3)

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 (#) define la movie como una variable de plantilla local, pero ¿qué significa el asterisco antes de 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 de routerLink vinculan 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!!


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 está después de = 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:

<element (event)="method()"></element>

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:

<element [ngStyle]="{display:someClassVariable}">

¿Ver? Le está dando al elemento un estilo basado en su modelo / clase.

Para esto podrías haber usado ...

<element style="display:{{ModelVariable}};">

La recomendación es que use llaves dobles para las cosas que imprimirá en la pantalla, como:

<h1>{{Title}}</h1>

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 para que un ngFor funcione.

Una actualización importante es que en ngFor ya no ngFor hash; necesita usar let lugar de la siguiente manera:

<tr *ngFor="let movie of movies"> <td>{{movie.title}}</td> </tr>

Una última cosa que vale la pena mencionar es que todo lo anterior también se aplica a sus componentes, por ejemplo, si crea un método en su componente, se llamará usando () :

<my-owncomponent (onSearched)="MethodToCall()" [MyInputData]="SearchParamsArray"></my-owncomponent>


Todos los detalles se pueden encontrar aquí: https://angular.io/docs/ts/latest/guide/template-syntax.html

  • directiveName : es la forma abreviada de las directivas estructurales donde la forma larga solo se puede aplicar a las etiquetas <template> . La forma corta envuelve implícitamente el elemento donde se aplica en una <template> .

  • [prop]="value" es para el enlace de objetos a propiedades ( @Input() de un componente o directiva angular o una propiedad de un elemento DOM).
    Hay formas especiales:

    • [class.className] une a una clase css para habilitarla / deshabilitarla
    • [style.stylePropertyName] une a una propiedad de estilo
    • [style.stylePropertyName.px] une a una propiedad de estilo con una unidad preestablecida
    • [attr.attrName] vincula un valor a un atributo (visible en el DOM, mientras que las propiedades no son visibles)
    • [role.roleName] une al atributo de rol ARIA (aún no disponible)
  • prop="{{value}}" vincula un valor a una propiedad. El valor está stringificado (también conocido como interpolación)

  • (event)="expr" vincula un controlador de eventos a un evento @Output() o DOM

  • #var o #var tiene diferentes funciones según el contexto

    • En un *ngFor="#x in y;#i=index" se crean variables de alcance para la iteración
      (En beta.17 esto se cambia a * ngFor = "let x in y; let i = index" `)
    • En un elemento DOM <div #mydiv> una referencia al elemento
    • En un componente angular, una referencia al componente
    • En un elemento que es un componente angular o tiene una directiva angular donde se exportAs:"ngForm" , #myVar="ngForm" crea una referencia a este componente o directiva.

[] - Enlace de propiedad Unidireccional desde el origen de datos hasta el objetivo de visualización. p.ej

{{expression}} [target]="expression" bind-target="expression"

Podemos usar bind- en lugar de []

() -> Enlace de eventos Unidireccional desde el objetivo de vista al origen de datos

(target)="statement" on-target="statement"

Podemos usar on- en lugar de ()

[()] - Banana vinculante bidireccional en una caja

[(target)]="expression" bindon-target="expression"

Podemos usar bindon- en lugar de [()]