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

A mensagem da ap-vmessage não aparece no formulário

Olá. estou realizando a criação de validators no formulário de inserção de novo usuário mas as mensagens de obrigatoriedade dos campos do formulário não aparecem na tela.

Segue o código:

signup.component.ts

import { Component, OnInit } from "@angular/core";
import { FormBuilder, FormGroup, Validators } from "@angular/forms";
import { lowerCaseValidator } from "src/app/shared/validators/lower-case-validator";

@Component({
    templateUrl: './signup.component.html'
})
export class SignUpComponent implements OnInit{

    signupForm: FormGroup;

    constructor(private formBuilder: FormBuilder){}


    ngOnInit(): void {
        this.signupForm = this.formBuilder.group({
            email: ['', 
            [
                Validators.required,
                Validators.email
            ]
        ],

            fullName: ['', [
                Validators.required,
                Validators.minLength(2),
                Validators.maxLength(40)
            ]
        ],
            userName: ['', [
                Validators.required,
                //Validators.pattern(/ˆ[a-z0-9_\-]+$/),
                lowerCaseValidator,
                Validators.minLength(2),
                Validators.maxLength(30)
            ]
        ],
            password: ['', [
                Validators.required,
                Validators.minLength(8),
                Validators.maxLength(14)
            ]
        ]
        });
    }


}

signup.component.html


<h4 class="text-center">Register to embrace a new world</h4>

<form [formGroup]="signupForm" class="form mt-4">

    <div class="form-group">
        <input formControlName="email" class="form-control" placeholder="email" autofocus>
        <ap-vmessage 
            *ngIf="signupForm.get('email').erros?.required" 
            text="O email é obrigatório">
        </ap-vmessage>
        <ap-vmessage 
            *ngIf="signupForm.get('email').erros?.email" 
            text="Email inválido"
        ></ap-vmessage>
    </div>

    <div class="form-group">
        <input formControlName="fullName" class="form-control" placeholder="full name">
        <ap-vmessage 
            *ngIf="signupForm.get('fullName').erros?.required" 
            text="o nome completo é obrigatório"
        ></ap-vmessage>
        <ap-vmessage 
            *ngIf="signupForm.get('fullName').erros?.minlength" 
            text="É necessário o minímo de 2 caracteres"
        ></ap-vmessage>
        <ap-vmessage 
            *ngIf="signupForm.get('fullName').erros?.maxlength" 
            text="O limite são de 40 caracteres"
        ></ap-vmessage>
    </div>

    <div class="form-group">
        <input formControlName="userName" class="form-control" placeholder="user name">
        <ap-vmessage 
            *ngIf="signupForm.get('userName').erros?.required" 
            text="O user name é obrigatório"
        ></ap-vmessage>
        <ap-vmessage 
            *ngIf="signupForm.get('userName').erros?.minlength" 
            text="É necessário o minímo de 2 caracteres"
        ></ap-vmessage>
        <ap-vmessage 
            *ngIf="signupForm.get('userName').erros?.maxlength" 
            text="O limite são de 30 caracteres"
        ></ap-vmessage>
        <ap-vmessage 
            *ngIf="signupForm.get('userName').erros?.lowerCase" 
            text="Precisa ser um minusculo"
        ></ap-vmessage>
    </div>

    <div class="form-group">
        <input formControlName="password" type="password" class="form-control" placeholder="password">
        <ap-vmessage 
            *ngIf="signupForm.get('password').erros?.required" 
            text="A senha é obrigatória"
        ></ap-vmessage>
        <ap-vmessage 
            *ngIf="signupForm.get('password').erros?.minlength" 
            text="É necessário o minímo de 8 caracteres"
        ></ap-vmessage>
        <ap-vmessage 
            *ngIf="signupForm.get('password').erros?.maxlength" 
            text="O limite são de 14 caracteres"
        ></ap-vmessage>
    </div>

    <button class="btn btn-primary btn-block">Register</button>

    <p>Already a user?<a [routerLink]="['']">Sign In!</a></p>
</form>

`

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Todas as suas mensagens de erro estão utilizando propriedades em português:

<ap-vmessage 
            *ngIf="signupForm.get('email').erros?.required" /* a propriedade correta é errors */
            text="O email é obrigatório">
</ap-vmessage>

O nome da propriedade deve estar em inglês errors ao invés de erros:

<ap-vmessage 
            *ngIf="signupForm.get('email').errors?.required"
            text="O email é obrigatório">
</ap-vmessage>

Putz, nem percebi esse vacilo. Obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software