Eu tenho lido a referência rápida Angular 1 a 2 no site da Angular , e uma coisa que eu não entendi completamente foi a diferença entre esses caracteres especiais. Por exemplo, um que usa asteriscos:
<tr *ngFor="#movie of movies">
<td>{{movie.title}}</td>
</tr>
Entendo aqui que o símbolo de hash (#) define movie
como uma variável de modelo local, mas o que o asterisco antes ngFor
significa? E isso é necessário?
A seguir, estão os exemplos que usam colchetes:
<a [routerLink]="['Movies']">Movies</a>
Eu entendo um pouco que os colchetes ao redor routerLink
vinculam a esse atributo HTML / diretiva Angular. Isso significa que eles são um ponteiro para o Angular avaliar uma expressão? Como [id]="movieId"
seria o equivalente id="movie-{{movieId}}"
em Angular 1?
Por fim, são parênteses:
<button (click)="toggleImage($event)">
Eles são usados apenas para eventos DOM e podemos usar outros eventos como (load)="someFn()"
ou (mouseenter)="someFn()"
?
Acho que a verdadeira questão é: esses símbolos têm um significado especial no Angular 2 e qual é a maneira mais fácil de saber quando usar cada um ? Obrigado!!
bind-
para[]
eon-
para()
ou<template [ngFor]>
para*ngFor
.[ngModel]="foo" (ngModelChange)="foo = $event"
onde a primeira parte atualiza angModel
propriedade (@Input() ngModel;
daNgModel
diretiva) when
foo` muda e a segunda parte é atualizadafoo
quando a@Output() ngModelChange;
(daNgModel
diretiva) . emite um eventoNgModel
é usado para valores ligam para formar elementos e componentes.[(bar)]
pode ser usado para qualquer@Input() bar;
@Output() barChange;
combinação, também de seus próprios componentes.[prop]="value"
eprop="{{value}}"
qualquer outra coisa além da sintaxe? Ambos podem passar valor para o@Input() value;
componente.[prop]="value"
pode atribuir valores de qualquer tipo,prop="{{value}}"
sempre especificavalue
antes da atribuição e, portanto, é inútil para passar objetos.[]
- Vinculação de propriedades. Só de ida da fonte de dados para visualizar o destino. por exemploPodemos usar bind- em vez de
[]
()
-> Ligação de evento Só de ida do destino da visualização para a fonte de dadosPodemos usar on- em vez de ()
[()]
- Banana de ligação em dois sentidos em uma caixaPodemos usar bindon - em vez de
[()]
fonte
Como já mencionado, a documentação do Angular, especialmente o "tutorial do herói", explica isso mais profundamente. Aqui está o link, se você quiser conferir .
Parênteses são eventos do elemento em que você está trabalhando, como o clique em um botão, como no seu exemplo; isso também pode ser feito com mouse, keyup, onselect ou qualquer ação / evento para esse elemento, e o que se segue a
=
é o nome do método a ser chamado - usando os parênteses para a chamada. Esse método deve ser definido na sua classe de componente, ou seja:Parênteses funciona de outra maneira. Eles devem obter dados da sua classe - o oposto dos parênteses que estavam enviando o evento -, portanto, um exemplo comum é o uso de um estilo como este:
Vejo? Você está dando ao elemento um estilo com base no seu modelo / classe.
Para isso, você poderia ter usado ...
A recomendação é que você use colchetes duplos para coisas que você imprimirá na tela, como:
O que quer que você use, se você for consistente, ajudará na legibilidade do seu código.
Por fim, para sua
*
pergunta, é uma explicação mais longa, mas é MUITO importante: Abstrai a implementação de alguns métodos que, de outra forma, você teria que fazer para conseguirngFor
trabalhar.Uma atualização importante é que
ngFor
você não usará mais o hash; você precisa usar olet
seguinte:Uma última coisa que vale a pena mencionar é que todas as opções acima também se aplicam aos seus componentes, por exemplo, se você criar um método em seu componente, ele será chamado usando
()
:fonte