Mi problema es que Angular 2/4 siempre valida con desenfoque y enfoque al instante.
Pero incluso Google mismo siempre valida después del primer envío.
¿Sabe cómo cambiar los formularios para que solo inicien la validación de disparo después del primer envío con una solución simple para que pueda usar todos mis formularios? Puedo crear una directiva, pero aún no he encontrado la solución, ¿tienes alguna idea?
Puede hacerlo en su función onSubmit(). Aquí puede validar sus FormControls y configurar manualmente un error como este ejemplo de la función 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)) } }En su HTML, puede verificar si el error creado manualmente es así y puede agregar algunos mensajes de error a su interfaz de usuario:
<span *ngIf="registerForm.controls['email'].hasError('invalidEmail')" class="help-block has-error">E-Mail already exists</span>