如何使用Validators类在Angular2中显示用于电子邮件验证的不同验证消息? [英] How to show different validation messages for email validation in Angular2 using Validators class?
问题描述
我正在使用 FormGroup , FormBuilder 和 Validators 类在Angular2应用中验证表单。
I am using FormGroup, FormBuilder and Validators class to validate a form in Angular2 app.
这是我定义电子邮件和密码验证所需的验证规则的方式:-
This is how I am defining the required validation rules for email and password validation:-
export class LoginComponent implements OnInit {
loginFormGroup:FormGroup;
adminLoginmodel = new Admin('', '', '', 'Emailsss','Passwordsss');
constructor(
private route: ActivatedRoute,
private router: Router,
private _adminLogin: AdminLoginService,
fb: FormBuilder
){
this.loginFormGroup = fb.group({
'email' : [null, Validators.compose([Validators.required, Validators.email])],
'password': [null, Validators.required]
});
}
}
代码 Validators.compose ([Validators.required,Validators.email])
检查电子邮件字段是否为空以及所提供的字符串是否为有效电子邮件。
The code Validators.compose([Validators.required, Validators.email])
checks both whether an email field is empty and whether the provided string is valid email.
但是,我不知道如何在不同情况下显示不同的验证消息。说
However, I don't know how to show different validation message in different cases. Say
- 如果电子邮件字段为空,我需要显示请提供电子邮件
地址 - 如果提供的电子邮件无效,则我需要显示提供的电子邮件不是有效电子邮件。
这是我在html中显示验证消息的方式:-
Here is how I was displaying validation message in my html:-
<div class="input-group input-group-lg" [ngClass]="{'has-error':!loginFormGroup.controls['email'].valid && loginFormGroup.controls['email'].touched}">
<span class="input-group-addon"><i class="glyphicon glyphicon-user red"></i></span>
<input type="text" class="form-control" placeholder="Email" id="email" name="email" [formControl]="loginFormGroup.controls['email']" [(ngModel)]="adminLoginmodel.email"/>
</div>
<div class="alert alert-danger" *ngIf="!loginFormGroup.controls['email'].valid">You must add an email.</div>
如何在不同情况下显示不同的消息?
How can I show different messages in different cases?
推荐答案
import { Component } from '@angular/core';
import {FormControl, Validators} from '@angular/forms';
@Component({
selector: 'my-app',
template: `
<input [formControl]="ctrl" />
<div *ngIf="ctrl.errors?.email">
Provided email is not a valid email
</div>
<div *ngIf="ctrl.errors?.required">
Please provide an email address
</div>
`,
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
ctrl = new FormControl(null, Validators.compose([Validators.email, Validators.required]));
}
评论中的讨论证明,此特定问题的答案是:
Discussion in the comments proved that the answer to this specific problem is:
<div class="alert alert-danger" *ngIf="loginFormGroup.controls['email'].hasError('email')">Provide a valid email.</div>
<div class="alert alert-danger" *ngIf="loginFormGroup.controls['email'].hasError('required')">Please provide an email address</div>
这篇关于如何使用Validators类在Angular2中显示用于电子邮件验证的不同验证消息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!