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

222
Views
Error de eliminación de formas reactivas de Angular2

Estoy tratando de establecer un estado de control de formulario en válido

 this.currencyForm.controls['currencyMaxSell'].setErrors({smallerThan: true})

ahora quiero eliminar este error.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Otras soluciones parecen no funcionar. Parece que angular piensa que el control no es válido siempre que la propiedad de errores no sea nula.

Siempre que desee eliminar un solo error y dejar otros, no hay forma de hacerlo sino manualmente. Esta función eliminará solo un error especificado en el argumento y dejará otros. También se asegurará de que si elimina el último error, el control será válido.

 // call it in validator function if control is valid removeError(this.currencyForm.controls['currencyMaxSell'], 'smallerThan'); // this function removes single error function removeError(control: AbstractControl, error: string) { const err = control.errors; // get control errors if (err) { delete err[error]; // delete your own error if (!Object.keys(err).length) { // if no errors left control.setErrors(null); // set control errors to null making it VALID } else { control.setErrors(err); // controls got other errors so set them back } } } // this function adds a single error function addError(control: AbstractControl, error: string) { let errorToSet = {}; errorToSet[error] = true; control.setErrors({...control.errors, ...errorToSet}); }
over 4 years ago · Santiago Trujillo Report

0

Para eliminar solo un error de control de formulario al realizar la validación manual, haga lo siguiente:

 this.myFormGroup.get('myControl').setErrors({'myCustomError':null})

Esto solo actualizará el valor del error especificado y no borrará ninguna validación anterior que haya realizado, a diferencia de setErrors(null) , que anula todo el objeto de errores para el control.

over 4 years ago · Santiago Trujillo Report

0

AFAIK, realmente no necesita usar el método setErrors cuando puede crear validadores personalizados . Puede crear fácilmente validadores personalizados para su formControl o formGroup y dentro de su validador solo necesita devolver un ValidatorFn y no debe usar el método setErrors .

Para obtener más información sobre el validador personalizado para FormGroup, le sugiero que lea este artículo que resolvió mi problema.

Este es mi código de trabajo:

 registerationForm = this.formBuilder.group({ username: ['', [Validators.required, Validators.email]], passwords: this.formBuilder.group( { password: ['', Validators.required], confirmPassword: ['', Validators.required] }, { validator: matchPassword } ), policyAgreement: ['', Validators.required] }); // Outside my component: const matchPassword = (group: FormGroup) => { const password = group.get('password').value; const confirmPassword = group.get('confirmPassword').value; return password != confirmPassword ? { matchPassword: true } : null; };
over 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!