我的问题是Angular 2/4总是通过模糊验证并立即聚焦。
但即便谷歌本身也会在第一次提交后验证。
您是否知道如何将表单更改为仅在第一次提交后使用简单的解决方案启动防火验证,以便我可以使用我的所有表单。我可以创建一个指令,但我还没有找到解决方案,你有什么想法吗?
答案 0 :(得分:1)
您可以在onSubmit()函数上执行此操作。在这里,您可以验证FormControls并手动设置错误,如此示例validateEmail()函数。
validateEmail() {
let invalid: boolean;
if (this.registerForm.get("email").valid) {
this.registerService.checkEmail(this.registerForm.get("email").value).subscribe( res => {
invalid = res ? true : false;
if (invalid) {
console.log("Email is invalid: User already exists", res);
this.registerForm.controls["email"].setErrors({invalidEmail: true});
}
},
error => console.log("Error at this.registerService.checkEmail()", error))
}
}
在HTML中,您可以检查手动创建的错误是否为真,并且可以向您的UI添加一些错误消息:
<span *ngIf="registerForm.controls['email'].hasError('invalidEmail')" class="help-block has-error">E-Mail already exists</span>