Este é um exemplo simples de como utilizar o ControlValueAccessor do Angular para criar controles personalizados em forma de componente. No caso, o exemplo é uma tela de contato ("contact-us") com três campos de entrada: nome, email e mensagem. Além disso, há um botão "Enviar" que simula o envio do formulário.
O projeto possui duas rotas: uma que leva para o formulário feito em template-driven, e a outra rota leva para o formulário feito com reactive forms.