When developing Angular application, to achieve 2-way binding, what is the advantage of using the [(ngModel)] approach (shown below) over the following 3 approaches (also listed below). Also, which amongst the foll. are the best options to achieve 2 way data binding (whether building forms or in general (non-form) use-case scenario)?
[(ngModel)] approach:
<input [(ngModel)]="varName">
<--OR-->
<input [ngModel]="varName" (ngModelChange)="SomeFunction($event.target.value)">
1. Input/event binding as follows:
<input [value]="aVar" (input)="aVar=$event.target.value" >
{{aVar}}
2. Template variable as follows:
<input [value]="bVar" (input)="bVar=ipx.value" #ipx>
{{bVar}}
3. Banana syntax approach:
<input ([value])="cVar">
{{cVar}}