If you've come from AngularJS, there's a high chance that the Template-Driven approach will ring a bell or two. As the name implies, Template-Driven Forms host most of the logic in the template code; working with a Template-Driven Form means to build the form in the .html template file, bind data to the various input fields using an ngModel instance, and use a dedicated ngForm object related to the whole form and containing all the inputs, with each being accessible through their name, to perform the required validity checks.
To understand this, here's what a Template-Driven Form looks like:
<form novalidate autocomplete="off" #form="ngForm"
(ngSubmit)="onSubmit(form)">
<input type="text" name="name" value="" required
placeholder="Insert the city name..."
[(ngModel)]="city.Name" #title="ngModel"
/>
<span *ngIf...