Uma*_*twa 3 angular-validation angular angular4-forms
当我们继续在文本框中输入内容时,电子邮件验证被触发。我希望当用户将焦点移到文本框之外时触发此验证
下面是我的代码:
<input class="form-control" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$"
name="Email" type="email" [(ngModel)]="model.Email" #Email="ngModel" required>
<div class="red" *ngIf="Email.errors && (Email.dirty || Email.touched)">
<div [hidden]="!Email.errors.pattern">
Please enter a valid email.
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
请建议我该如何实现。提前致谢。
从版本6+开始,可以通过updateOn
属性设置字段验证。
使用模板驱动的表单:
<input [(ngModel)]="name" [ngModelOptions]="{updateOn: 'blur'}">
Run Code Online (Sandbox Code Playgroud)
使用反应形式:
new FormControl('', {updateOn: 'blur'});
Run Code Online (Sandbox Code Playgroud)
并且如果您设置了验证器:
new FormControl('', {validators: [Validators.required, Validators.email], updateOn: 'blur'})
Run Code Online (Sandbox Code Playgroud)
资料来源:https : //angular.io/guide/form-validation#note-on-performance
这将在尚未发布的版本 5 中实现。
请参阅: https: //github.com/angular/angular/issues/7113
同时:
<input class="form-control" formControlName="userName" placeholder="User Name" type="text" (blur)="checkUserExists()"/>
<div class="alert-danger" *ngIf="userName.invalid && userName.touched">
<div *ngIf="userName.hasError('required')">User Name is required</div>
<div *ngIf="userName.hasError('userExists')">{{userName.errors.userExists}}</div>
</div>
checkUserExists() {
if (this.userName.value) {
this.regServ.userNameExists(this.userName.value)
.subscribe((exists) => {
if (exists) {
this.userName.setErrors({ userExists: `User Name "${this.userName.value}" already exists` });
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4998 次 |
最近记录: |