No código disponibilizado na transcrição da Aula o #nome="ngModel"
está fora do input, o que irá gerar um comportamento não esperado!
<main class="principal">
<h2 class="principal__titulo">Dados do cadastro</h2>
<form class="principal__formulario" id="formulario" #f="ngForm" (ngSubmit)="cadastrar(f)">
<h3 class="principal__subtitulo">Dados pessoais</h3>
<div class="formulario__campo">
<!-- NOME COMPLETO -->
<label class="campo__etiqueta" for="nome">Nome Completo</label>
<input
name="nome"
id="nome"
class="campo__escrita"
ngModel
required
minlength="2">
#nome="ngModel"
/>
<div *ngIf="(nome?.invalid && nome?.touched) || nome?.dirty">
<app-mensagem *ngIf="nome?.errors?.['required']" mensagem="O campo de nome deve ser preenchido."></app-mensagem>
<app-mensagem *ngIf="nome?.errors?.['minlength']" mensagem="O nome deve ter no mínimo 2 caracteres."></app-mensagem>
</div>
</div>
//código omitido