Abbiamo visto come Angular 2 ci metta a disposizione due approcci alla gestione di form: l'approccio Template Driven e quello Model Driven o Reactive.
Il primo favorisce un approccio dichiarativo basato sul template HTML del componente e sull'utilizzo di ngModel
per il binding con e di direttive specializzate per la validazione.
Il secondo approccio, invece, predilige la scrittura di codice all'interno del componente limitando il ruolo del markup al binding per la presentazione dei dati e l'interazione con l'utente.
Viene naturale chiedersi quale dei due approcci utilizzare nello sviluppo delle nostre applicazioni. Come spesso accade la risposta dipende in parte da preferenze individuali ed in parte dalla complessità e dalle esigenze della specifica form da implementare.
Template Driven, i "pro"
Possiamo dire che, in linea di massima, l'approccio Template Driven è più adatto a form semplici che non hanno bisogno di elaborazioni complesse. In pochi passaggi è semplice mettere su una form con gli elementi desiderati ed i controlli di validazione opportuni.
Reactive o Model Driven, i "pro"
L'approccio Reactive, d'altra parte, si presenta un prolisso ma offre una maggiore flessibilità e si presta alla realizzazione di form sofisticate. Si pensi ad esempio alla possibilità di generare dinamicamente i controlli di una form in base a specifici criteri oppure alla opportunità di aggiungere o togliere criteri di validazione in base allo stato corrente dei dati. A ciò si aggiunga anche la possibilità di definire unit test per validare la logica di gestione di una form, cosa difficilmente fattibile con l'approccio Template Driven
.
Scegliere un solo approccio
Una cosa è certa: evitare la commistione dei due approcci, pena il rischio di perdere il controllo sugli elementi della form e l'imprevedibilità del comportamento dell'applicazione.