Durante meus estudos, percebi que não é necessário utilizar o método Validators.compose, pois é possível simplificar a configuração das validações da seguinte forma:
autoria: ['', [Validators.required, Validators.minLength(3)]],
Além disso, para evitar a repetição de código no HTML, as mensagens de erro podem ser centralizadas e exibidas de maneira mais limpa, como no exemplo abaixo:
<div *ngIf="formulario.get('autoria')?.errors as errors">
<ng-container *ngIf="formulario.get('autoria')?.touched">
<span class="mensagem__erro" *ngIf="errors['minlength']">Autoria precisa conter no mínimo 3 caracteres.</span>
<span class="mensagem__erro" *ngIf="errors['required']">Campo obrigatório.</span>
</ng-container>
</div>
Com essa abordagem, o código se torna mais organizado e fácil de manter, especialmente em formulários com várias validações.
Estou usando a versão 18 do angular e adaptando o projeto do curso.