Para as novas versões do Angular, a solução mostrada na aula passa a exibir o erro "Object is possibly 'null' or 'undefined' em várias situações. Foram sugeridas algumas soluções em posts anteriores, mas que exigiam muito código extra - testando e procurando na internet encontrei algumas soluções mais sucintas.
Para a mensagem de erro, pode se usar a seguinte expressão, que não causa o erro:
*ngIf="loginForm.get('userName')?.errors?.['required']"
Para a declaração de variáveis não inicializadas no construtor (como o loginForm), o problema é que mesmo que o compilador não saiba, nós sabemos que ela vai ser inicializada no ngOnInit. Nesse caso basta acrescentar uma exclamação logo após o nome da variável em sua declaração:
export class SigninComponent implements OnInit {
loginForm!: FormGroup;
constructor(private formBuilder: FormBuilder) { }