Estoy generando un formulario de forma dinámica, en el cuadro de texto, estoy vinculando la función de cálculo de BCT como se muestra a continuación <input matInput type="text" (keyup)="calculateBCT($event)" formControlName="avgBCT"> y devuelvo el resultado en el siguiente cuadro de texto con ngModel.
<input matInput type="text" [(ngModel)]="calculatedResult" formControlName="avgCapacity">.Salida esperada: si ingreso un valor en el cuadro de texto 0, llamará a la función de cálculo de BCT y reflejará el resultado solo en el cuadro de texto de resultado 0. Cuando ingrese el valor en el cuadro de texto 1, llamará a la función de cálculo de BCT y reflejará el resultado en el cuadro de texto de resultado 1 de la misma manera.
¿Alguien puede ayudarme a obtener el resultado esperado?
Pruebe esto, y vea si ayuda.
En app.component.html , realice los siguientes cambios:
[(ngModel)]="calculatedResult" ya que ya está usando formControlNamei para calcular BCT como (keyup)="calculateBCT($event, i)"En app.component.ts , modifique el método de cálculo de BCT como:
calculateBCT($event, index: number) { // Your existing logic goes here... const calculatedResult = result ? result : 0; // In below code, please put some checks to ensure that formControl does exist const formControl = this.itemTypes().at(index).get('avgCapacity'); formControl.setValue(calculatedResult); }Editar:
Como ya tiene formGroup disponible en el archivo html, simplemente puede pasar lineItem como segundo parámetro para calculateBCT BCT y acceder a formControl como const formControl = lineItem.get('avgCapacity');