Mi aplicación consta de una matriz de formulario que tiene diferentes campos calculados automáticamente en función de otros campos, por lo que necesito suscribirme a los cambios de valor para algunos campos, pero es la primera vez que trabajo con form Array. Este es el código que usé para hacer el formulario de matriz
constructor(public FormBuilder: FormBuilder ) { this.testForm= new FormGroup({ formArrayName: this.FormBuilder.array([]) }); this.buildForm(); } buildForm() { const controlArray = this.testForm.get('formArrayName') as FormArray; Object.keys(this.options).forEach((i) => { controlArray.push( this.FormBuilder.group({ id_agent : [this.options[i].ID , Validators.required] , calls : [0] , CA : { value: 0, disabled: true } , RPC : { value: 0, disabled: true } , CR : { value: 0, disabled: true } , ACU : { value: 0, disabled: true } , CB : [0] , RP : [0] , NGT : { value: 0, disabled: true } , sells : { value: 0, disabled: true } , week : ['' , Validators.required] , } ) ); }); }Me las arreglé para suscribirme a los cambios de valor de los controles de agujeros como este
controlArray.controls.forEach((control ,index)=> { control.valueChanges.subscribe(value => { console.log(value) }); });Esto funciona, pero necesito suscribirme a un campo específico, traté de trabajar con eso, pero entró en un bucle infinito. Puedo entender por qué estaba mal. así que necesito algo como:
controlArray.controls.forEach((control ,index)=> { control['calls'].valueChanges.subscribe(value => { console.log(value) }); });Intenté esto por cierto y obtuve el error No se pueden leer las propiedades de undefined (leyendo 'valueChanges')