Angular 2 FormBuilder w/ Custom/Dynamic Validation loop -
background
i have form multiple fields affect validation of 1 another.
as simple example, let's take simple form cellno (cellphone number) , homeno (a home contact number).
both have validation applied them detecting validity of numbers themselves, however: if cellno entered - homeno field isn't required, and visa versa.
i implement subscription valuechanges of each field updates validators of each field based on formcontrol values of each, , calls updatevalueandvalidity() function.
by calling function however, triggers valuechanges subscription of each field, causing infinite loop.
question
what best way go achieving formbuilder?
edit 1: replicated issue in plunkr.
open console/devtools see looping output. function gets called repeatedly is:
updatephonevalidations() {     console.log('updating validations');     let cellvalidators = [validators.pattern(this.phone_regex), validators.maxlength(25)];     if (this.inputform.controls.homeno.value.length === 0) {         this.inputform.controls.cellno.setvalidators([...cellvalidators, validators.required]);     } else {         console.log('removing cellno');          this.inputform.controls.cellno.setvalidators([...cellvalidators]);      }      this.inputform.controls.cellno.updatevalueandvalidity();      let homenovalidators = [validators.pattern(this.phone_regex), validators.maxlength(25)];     if (this.inputform.controls.cellno.value.length === 0 ) {         this.inputform.controls.homeno.setvalidators([...homenovalidators, validators.required]);     } else {         console.log('removing homeno', this.inputform.controls.homeno);          this.inputform.controls.homeno.setvalidators([...homenovalidators]);      }      this.inputform.controls.homeno.updatevalueandvalidity(); }  
 
Comments
Post a Comment