En esta demostración paso a paso de material de restablecimiento de contraseña, en el primer paso, el correo electrónico se recopila en un emailForm
de correo electrónico.
Cuando se hace clic en next
, la función de emailControl
submitEmail
el correo electrónico ingresado.
Este es el código para eso:
submitEmail() { if (this.emailForm.valid) { const email = this.emailForm.get('email')!.value; this.confirmCodeForm.get('email')!.setValue(email); console.log('THE EMAIL IS: ', this.confirmCodeForm.get('email').value); this.onEmailSubmit.emit(email); } }
Podemos ver que el email
de valor de control tiene el email
ingresado establecido a través de esta declaración de registro:
this.confirmCodeForm.get('email').value);
Sin embargo, en el segundo paso, el formulario no se vuelve a pintar y, por lo tanto, el campo de email
(que es de readonly
) no refleja la dirección de correo electrónico ingresada.
¿Cómo le decimos a confirmCodeForm
que vuelva a pintar después de llamar a setValue
en el control de email
?
También intenté usar patchValue
así:
const email = this.emailForm.get('email')!.value; this.confirmCodeForm.patchValue({ email }); console.log('THE EMAIL IS: ', this.confirmCodeForm.get('email').value); this.onEmailSubmit.emit(email);
Y el control tiene el correo electrónico ingresado como su valor, pero el formulario no se vuelve a pintar.
De acuerdo, fue bastante difícil leer lo que querías lograr aquí. Pero creo que lo tengo. Desea tomar el correo electrónico ingresado del paso 1 y copiarlo en el paso 2 en la entrada de correo electrónico y el valor del formulario. El problema fue que el valor de control se estableció con .setValue(email)
pero el código html no reflejó el cambio de valor porque formControlName
no apuntaba a eso.
Cambié html para el segundo paso formControlName
a correo electrónico y agregué this.confirmCodeForm.updateValueAndValidity();
por si acaso (aunque el último no se requiere explícitamente).
<mat-form-field> <input type="email" matInput placeholder="email" formControlName="email" readonly /> </mat-form-field>
Ejemplo de trabajo: https://stackblitz.com/edit/angular-ivy-qfeglo?file=src%2Fapp%2Freset-password%2Freset-password.component.ts