Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida sobre validação

Vamos lá, quando a gente abri a página de LOGIN já vem preenchido em vermelho dizendo que os campos são obrigatórios, como eu faria para que esses textos só fossem mostrados caso o usuário submetesse o formulário?

3 respostas
solução!

Bom, segue a solução. O pulo do gato é declarar uma variável de template no formulário e consultar a propriesdade .submitted em cada condição do ngIf. Você precisa também remover o [disabled] do botão para que esteja habilitado. Mas isso não é suficiente, você precisa colocar uma condição if na submissão. Segue a solução completa:

<h4 class="text-center">Login</h4>

<!-- olha aqui a variável formDir -->
<form #formDir="ngForm" [formGroup]="loginForm" class="form mt-4" (submit)="login()">

    <div class="form-group">
        <input #userNameInput
            formControlName="userName" 
            class="form-control" 
            placeholder="user name" 
            autofocus>
<!--  veja aqui a condição && -->          
        <ap-vmessage   
*ngIf="loginForm.get('userName').errors?.required && formDir.submitted"
            text="User name is required!">
        </ap-vmessage>        
    </div>

    <!-- o restante é a mesma coisa -->
    <!-- veja que não há mais o disabled -->
    <button 
        type="submit" 
        class="btn btn-primary btn-block">
        login
    </button>

</form>

<p>Not a user? <a [routerLink]="['signup']">Register now</a></p>

Agora, no componente você faz o if:

    login() {
       // olha o if aqui
        if(this.loginForm.valid) {
             // código da submissão aqui dentro

         }
        }

Sucesso e bom estudo!

Atualizei a resposta anterior.

Aguardo seu feedback para saber se esta tudo certinho.