[(ngModel)]="overRideRate" is the short form of [ngModel]="overRideRate" (ngModelChange)="overRideRate = $event"

  • [ngModel]="overRideRate" is to bind overRideRate to the input.value
  • (ngModelChange)="overRideRate = $event" is to update overRideRate with the value of input.value when the change the event was emitted.

Together they are what Angular2 provides for two-way binding.

[ngModel]="currentHero.name" is the syntax for one-way binding, while

[(ngModel)]="currentHero.name" is for two-way binding, and the syntax is compound from: