Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

2.1K
Views
Formularios reactivos angulares: cómo restablecer el estado del formulario y mantener los valores después del envío

En una forma reactiva angular. ¿Cómo restablecer solo el estado del formulario después de un envío exitoso?

Aquí está el proceso:

  • Cree el formulario y setValue el valor a partir del resultado del servicio.
  • Modificar valores y enviar el formulario
  • Si el formulario se envía correctamente al servicio, reinicie y mantenga los valores

Cómo mantener los valores modificados y restablecer el formulario a su estado original.

Un form.reset() simplemente vacía el formulario. Pero si no lo llamo, el estado no se restablece y, por ejemplo, mis validaciones según las clases de estado del formulario (prístinas, sucias, válidas, etc.) todavía están allí.

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

La solución de @smnbbrv funciona bastante bien.

También puede proporcionar su valor de formulario real al método reset().

Dado el hecho de que myReactiveForm es un formulario reactivo en su componente. Después de enviar correctamente su formulario (llamando a un servicio, por ejemplo), puede hacer lo siguiente:

 this.myReactiveForm.reset(this.myReactiveForm.value);

Restablecerá el formulario y establecerá los valores del formulario "nuevo" en el mismo valor que tenía el formulario.

Este método se puede ver en el ejemplo de Tour of Hero Documento oficial de Angular.io

about 4 years ago · Santiago Trujillo Report

0

Eso es bastante fácil:

 this.form.markAsPristine(); this.form.markAsUntouched();

Esto restablece los metadatos del formulario y el formulario vuelve a estar impecable

about 4 years ago · Santiago Trujillo Report

0

Precaución para los usuarios de @angular/components (material)

Hay una complicación adicional si está utilizando controles de material angular, con mat-error para mostrar sus errores. Dichos errores se muestran en función del resultado de un ErrorStateMatcher (además de cualquier *ngIf que haya aplicado).

El ErrorStateMatcher predeterminado muestra errores basados en un valor booleano:

 isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean { return !!(control && control.invalid && (control.touched || (form && form.submitted))); }

Entonces, lo que esto significa en inglés es:

Si el formulario se envió alguna vez y uno de sus controles deja de ser válido (según las reglas de validación), se mostrará el error.

A menudo, esto no es lo que quieres (¡especialmente si estás leyendo esta pregunta!).

Mirando el código fuente, no hay una manera de establecer el envío submitted = false a menos que llame a resetForm en la directiva ngForm (no el objeto FormGroup). Establecer estados como prístinos o intactos no restablece enviado a falso.

Si está utilizando mat-error , puede que le resulte más fácil crear su propio ErrorStateMatcher (interfaz simple) para una lógica personalizada si esto es un problema.

Nota: ErrorStateMatcher solo está en material angular, y no forma parte de las formas angulares estándar.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!