2017-02-28 17 views
17

Oto przykład szablon:Różnica między [(ngModel)] a [ngModel] dla wiązania stanu do właściwości?

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

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

Tutaj obaj robi to samo. Który z nich jest preferowany i dlaczego?

+2

'[ngModel]' - to tylko własność wiążąca, a nie wiązanie dwukierunkowe. Zatem wpisanie nowej wartości nie spowoduje aktualizacji 'overRideRate'. – VadimB

+1

[(ngModel)] to wiązanie dwukierunkowe, które pochodzi od Angular 2. [ngModel] jest właśnie do pokazania. –

Odpowiedz

20

[(ngModel)]="overRideRate" jest skrótem od [ngModel]="overRideRate" (ngModelChange)="overRideRate = $event"

  • [ngModel]="overRideRate" jest wiązanie overRideRate do input.value
  • (ngModelChange)="overRideRate = $event" jest aktualizacja overRideRate o wartości input.value gdy zdarzenie change wydzielała się.

Razem są tym, co Angular2 zapewnia wiązanie w obie strony.

12

[ngModel]="currentHero.name" jest składnia wiązanie jednokierunkowe, a dla wiązania dwukierunkowego jest jednokierunkowe, a składnia jest składnikiem z:

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

Jeśli trzeba tylko przejść modelu, należy użyć pierwszego. Jeśli twój model potrzebuje nasłuchiwać zdarzeń zmiany (np. Gdy zmienia się wartość pola wejściowego), użyj drugiej.

Powiązane problemy