38 votes

Validation d'e-mail Angular2

Je suis nouveau dans l'apprentissage Angular2, et je veux faire un formulaire de validation qui permet de vérifier les e-mails après une RegEx modèle.

Mon code ressemble à quelque chose comme ça, mais je n'ai aucune idée de si je suis en train de faire, ou ce que j'ai fait de mal, quelqu'un peut-il m'aider un peu?

Merci!!!!

Je l'ai corrigé. Merci beaucoup tout le monde.

<div class="alert-email">
    <label for="contactemail">EMAIL: </label>
    <input type="email" id="contactemail" name="contactemail"
           required ng-pattern="/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/"
           [(ngModel)]="model.contactemail" #contactemail="ngModel"
           placeholder="Your email" /><br><br>
    <div *ngIf="contactemail.errors && (contactemail.dirty || contactemail.touched)" class="alert-email alert-danger-email"><br>
      <div [hidden]="!contactname.errors.required">
        Email is required
      </div>
      <div [hidden]="!contactname.errors">
        Please input a valid email.
      </div>
    </div>
  </div>

60voto

Jake Kieranan Points 562

Angular 4 possède une balise de validation "e-mail" intégrée qui peut être ajoutée dans l'entrée. Par exemple:

 <input type="email" id="contactemail" email>
 

Ce sera valable pour une série de chiffres et de lettres puis un @ puis une autre série de lettres. Il ne tiendra pas compte du point après le @ - pour cela, vous pouvez utiliser la balise "pattern" dans l'entrée et votre regex standard.

47voto

MMK Points 1588

Essayez quelque chose comme ça

 <div class="alert-email">
        <label>Email</label>
            <input
                id="contactemail"
                type="text"                
                #contactemail="ngModel"
                [(ngModel)]="model.contactemail"
                required
                pattern="^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$">

        <div class="md-errors-spacer" [hidden]="contactemail.valid || contactemail.untouched">
            <div  *ngIf="contactemail.errors && contactemail.errors.required">
                Email is required
            </div>
            <div  *ngIf="contactemail.errors && contactemail.errors.pattern">
                Email is invalid
            </div>
        </div>
    </div>
 

29voto

Sreekanth Karini Points 1139

Angular 4 Email Validation:

  • Utilisez l' e-mail pour votre entrée
  • Si vous voulez .com pour le courrier électronique, utilisez pattern pattern = "[a-zA-Z0-9.-_] {1,} @ [a-zA-Z .-] {2,} [.] {1} [a -zA-Z] {2,}

Finale:

 `<input type="email" [(ngModel)]="enterEmail" name="myEmail" #myEmail="ngModel" email pattern="[a-zA-Z0-9.-_]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}" required>`
 

4voto

tushar zore Points 51

Pour la validation de plusieurs e-mails dans un seul champ, vous pouvez le faire à l'aide du validateur d'e-mails personnalisé.

 import { FormControl } from '@angular/forms';

export class EmailValidator {

public static isValid(email) {
    var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(String(email).toLowerCase());
}

static isMultiValid(control: FormControl): any {

  console.log(control.value);
  let tempEmail = control.value;
  let invalid = false;
  let regex =/[a-z0-9!#$%&'*+=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/g;

  if(tempEmail.indexOf(',') > -1){
    var emails = control.value.split(',');
      for (let email of emails) {
        console.log(email);
        let isValid = EmailValidator.isValid(email)
        if(!isValid){
          return{"email not valid":isValid}
        }
      }
      return null;
  }
  else{
    let email = control.value.split(',');
    if( email == "" || ! regex.test(email)){
        invalid = true;
        return {
            "email not valid": invalid
        };
    }
    console.log("valid");
    return null;

   }
  }
}
 

.

4voto

hamid araghi Points 26

Vous pouvez utiliser ce modèle pour vos entrées de courrier électronique:

 ^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$
 

ref

Ce modèle accepte également "sample @ domain" en plus de "sample@domain.dom". Utilisation de ce modèle d'e-mail "exemple @ domaine". n'est pas acceptable et le domaine 1 lettre tld n'est pas autorisé ("sample@domain.s" va mal).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X