¿Diferencia entre [(ngModel)] y [ngModel] para vincular el estado a la propiedad?


Aquí hay un ejemplo de plantilla:

 <input type="number" class="form-control" [(ngModel)]="overRideRate" formControlName="OverRideRate">

 <input type="number" class="form-control" [ngModel]="overRideRate" formControlName="OverRideRate">

Aquí ambos hacen lo mismo. Cuál es el preferido y por qué?

 28
Author: LittleDragon, 2017-02-28

3 answers

[(ngModel)]="overRideRate" es la forma corta de [ngModel]="overRideRate" (ngModelChange)="overRideRate = $event"

  • {[2] } es unir overRideRate al input.value
  • (ngModelChange)="overRideRate = $event" es actualizar overRideRate con el valor de input.value cuando se emitió el evento change.

Juntos son lo que Angular2 proporciona para la unión bidireccional.

 48
Author: Günter Zöchbauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-28 09:33:13

[ngModel]="currentHero.name" es la sintaxis para el enlace unidireccional, mientras que,

[(ngModel)]="currentHero.name" es para enlace bidireccional, y la sintaxis es compuesta de:

[ngModel]="currentHero.name" y (ngModelChange)="currentHero.name = $event"

Si solo necesita pasar el modelo, use el primero. Si su modelo necesita escuchar eventos de cambio (por ejemplo, cuando cambia el valor del campo de entrada), use el segundo.

 27
Author: Seid Mehmedovic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-28 09:58:48

Es bastante simple [] = > componente a plantilla () = > plantilla a componente [(ngModel)] es una forma contraída de [ngModel]="currentHero.name" (ngModelChange)="currentHero.name=$event">

Más detalles aquí : https://angular.io/docs/ts/latest/guide/template-syntax.html#! # ngModel

 14
Author: mickdev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-28 09:34:27