title: Angular2 Model driven forms versus Template driven forms
body: <p>I am using Angular2. I want to do form validations.
  Currently my template looks like this:</p>
  
  <pre><code>&lt;form #f="ngForm" novalidate (ngSubmit)="save()"&gt;
          &lt;input type="checkbox" name="showHydroSystemSelection" [(ngModel)]="cosResponse.showHydroSystemSelection.value" (ngModelChange)="onChange(cosResponse.showHydroSystemSelection.shouldRefresh)"/&gt;
          &lt;label&gt;System Selection&lt;/label&gt;
          &lt;select name="systemSelection" id="systemSelection" [(ngModel)]="cosResponse.systemSelection.selected" (ngModelChange)="onChange(cosResponse.systemSelection.shouldRefresh)"&gt;
              &lt;option *ngFor="let option of cosResponse.systemSelection.value" value="{{option.id}}" &gt;
              {{option.name}}
              &lt;/option&gt;
          &lt;/select&gt;
  
  &lt;/form&gt;
  </code></pre>
  
  <p>In many blogs on how to do angular2 validations, they say to use a formGroup on the form. But if I do that, then angular complains with the error:
  " ngModel cannot be used to register form controls with a parent formGroup directive.  Try using formGroup's partner directive "formControlName" instead"</p>
  
  <p>The syntax for using ngModel is very good and dynamic for our app which totally depends on metadata to render different elements. The formGroup as a model is too explicit and static for our needs. I don't understand what are these two ways of using the model, and how to use formGroup effectively and as easily as ngModel</p>