Aqui está um exemplo de modelo:
<input type="number" class="form-control" [(ngModel)]="overRideRate" formControlName="OverRideRate">
<input type="number" class="form-control" [ngModel]="overRideRate" formControlName="OverRideRate">
Aqui, os dois fazem a mesma coisa. Qual é o preferido e por quê?
angular
angular-ngmodel
Pequeno dragão
fonte
fonte
[ngModel]
- é apenas uma associação de propriedade, não uma associação bidirecional. Portanto, inserir um novo valor não será atualizadooverRideRate
.[(ngModel)]
, duas vias de ligação de dados no AngularRespostas:
[(ngModel)]="overRideRate"
é a forma abreviada de[ngModel]="overRideRate" (ngModelChange)="overRideRate = $event"
[ngModel]="overRideRate"
é ligaroverRideRate
- se aoinput.value
(ngModelChange)="overRideRate = $event"
é atualizaroverRideRate
com o valor deinput.value
quando ochange
evento foi emitido.Juntos, eles são o que o Angular2 fornece para ligação bidirecional.
fonte
[ngModel]="currentHero.name"
é a sintaxe para vinculação unilateral, enquanto,[(ngModel)]="currentHero.name"
é para ligação bidirecional, e a sintaxe é composta de:[ngModel]="currentHero.name"
e(ngModelChange)="currentHero.name = $event"
Se você só precisa passar de modelo, use o primeiro. Se o seu modelo precisa ouvir eventos de mudança (por exemplo, quando o valor do campo de entrada muda), use o segundo.
fonte
É bastante simples [] => componente para modelo () => modelo para componente
[(ngModel)]
é uma forma contratada de[ngModel]="currentHero.name" (ngModelChange)="currentHero.name=$event">
Mais detalhes aqui: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#ngModel
fonte
Fluxo de dados Angular2 +:
No Angular, os dados podem fluir entre o modelo (classe de componente ts.file) e a visualização (html do componente) das seguintes maneiras:
Sintaxe:
modelo para visualizar:
Essa sintaxe também é conhecida como associação de propriedade . Agora, se a
overRideRate
propriedade do campo de entrada mudar, a visualização será atualizada automaticamente. No entanto, se a visualização for atualizada quando o usuário inserir um número, aoverRideRate
propriedade não será atualizada.vista para o modelo:
O que acontece aqui é que um evento é disparado (neste caso, evento de entrada, mas pode ser qualquer evento). Podemos então chamar métodos da classe do componente ou salvar diretamente a propriedade em uma propriedade de classe.
Ligação de dados bidirecional:
A sintaxe a seguir é usada para vinculação de dados bidirecional. É basicamente um açúcar sintático para ambos:
Agora, algo muda dentro de nossa classe, isso refletirá nossa visão (modelo para visão), e sempre que o usuário alterar a entrada, o modelo será atualizado (visão para modelo).
fonte
[ngModel]
avalia o código e gera uma saída (sem ligação bidirecional) .[(ngModel)]
avalia o código e gera uma saída e também permite a associação bidirecional .fonte