Formulários acionados por modelo:
importado usando FormsModule
Os formulários criados com a diretiva ngModel só podem ser testados em um teste de ponta a ponta, porque isso requer a presença de um DOM
O valor do formulário estaria disponível em dois locais diferentes: o modelo de visualização, ou seja, ngModel
Validação de formulário, à medida que adicionamos mais e mais tags validadoras a um campo ou quando começamos a adicionar validações complexas de campos cruzados, a legibilidade do formulário diminui
Formas reativas:
Pode geralmente usado para aplicações em grande escala
lógica de validação complexa é realmente mais simples de implementar
importados usando ReactiveFormsModule
O valor do formulário estaria disponível em dois locais diferentes: o modelo de visualização e o FormGroup
Teste fácil de unidade: podemos fazer isso apenas instanciando a classe, definindo alguns valores nos controles do formulário e executando asserções no estado válido global do formulário e no estado de validade de cada controle.
Uso de Observables para programação reativa
Por exemplo: um campo de senha e um campo de confirmação de senha precisam ser idênticos
Maneira reativa: basta escrever uma função e conectá-la ao FormControl
Maneira Orientada a Modelo: precisamos definir uma diretiva e de alguma forma transmitir o valor dos dois campos
https://blog.angular-university.io/introduction-to-angular-2-forms-template-driven-vs-model-driven/