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

Validação

Olá Professor, tudo bem ? Gostaria de validar os campos do form mas utilizar as classes do AngularJS, utilizando o *ngIf e fazendo algo parecido com o que segue abaixo... Porém de cara já vi que as classes "help-block" e "fa fa-check" do angular não são reconhecidas pelo ionic... Pelo menos não exibiu nada no form do ionic...

<div class="form-group">
    <label>NOME</label>
    <input type="text" name="nome">
    <span class="help-block"><i class="fa fa-check">OK</i></span>
</div>

Existe alguma forma de se utilizar essas classes do angular nesse form do ionic ?

<ion-content padding>

  <form class="form-login">
    <ion-list inset>

      <div class="inputs">

        <ion-item class="form-item">
          <ion-label stacked>NOME</ion-label>
          <ion-input name="operador" type="text" class="form-login-input"></ion-input>
        </ion-item>

        <ion-item class="form-item">
          <ion-label stacked>EMAIL</ion-label>
          <ion-input name="operador" type="email" class="form-login-input"></ion-input>
        </ion-item>

        <ion-item class="form-item">
          <ion-label stacked>CPF</ion-label>
          <ion-input name="operador" type="number" class="form-login-input"></ion-input>
        </ion-item>

        <ion-item class="form-item">
          <ion-label stacked>CELULAR</ion-label>
          <ion-input name="operador" type="tel" class="form-login-input"></ion-input>
        </ion-item>

      </div>

    </ion-list>

    <button ion-button round block class="form-button"
(click)="entrar()">ENTRAR</button>
  </form>
</ion-content>

Grato

3 respostas

Olá!

Eu não entendo quando você diz "as classes "help-block" e "fa fa-check" do angular não são reconhecidas pelo ionic..". Que classes do Angular você esta se referindo? Pelo o que eu vi, você parece estar usando classes do bootstrap, não é não?

solução!

Olá Professor, boa tarde.

Depois de um chá de boldo, consegui fazer :D

Ficou assim

pagina.html

  <form [formGroup]="primeiroAcessoForm" (ngSubmit)="logForm()">

    /* codigo omitido ...*/

      <ion-item>
        <ion-label stacked>E-MAIL</ion-label>
        <ion-input type="email" formControlName="email" name="email" ngModel></ion-input>
      </ion-item>
      <span *ngIf="!primeiroAcessoForm.controls.email.valid && (primeiroAcessoForm.controls.email.dirty || primeiroAcessoForm.controls.email.touched)">
        Por favor, informe um e-mail válido
      </span>

pagina.ts

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { FormGroup } from '@angular/forms/src/model';
import { FormBuilder } from '@angular/forms';
import { Validators } from '@angular/forms';

@IonicPage()
@Component({
  selector: 'page-primeiro-acesso',
  templateUrl: 'primeiro-acesso.html',
})
export class PrimeiroAcessoPage {
  private primeiroAcessoForm: FormGroup;

  constructor(
    public navCtrl: NavController,
    public navParams: NavParams,
    private formBuilder: FormBuilder) {
    this.primeiroAcessoForm = this.formBuilder.group({
      nome: ['', Validators.required],
      email: ['', Validators.email],
      cpf: ['', Validators.required],
      celular: ['', Validators.required],
    });
  }
  logForm() {
    console.log(this.primeiroAcessoForm.value)
    console.log(this.primeiroAcessoForm.controls.email);

  }
}

Sendo assim o span só aparece se: a) O campo não for válido, b) Se campo já foi tocado (se já foi dado foco) c) Se alguém já digitou alguma coisa no campo

Graças a esse trechinho

      <span *ngIf="!primeiroAcessoForm.controls.email.valid && (primeiroAcessoForm.controls.email.dirty || primeiroAcessoForm.controls.email.touched)">
        Por favor, informe um e-mail válido
      </span>

Não sei se há uma forma melhor de fazer isso.. mas deu certo ! rs

Excelente! Obrigado por compartilhar!