Cómo llamar a la función keyup en un cuadro de texto para cada formulario generado dinámicamente en Angular8.
Estoy generando un formulario de forma dinámica, en el cuadro de texto, estoy vinculando la función calculateBCT de la siguiente manera:
<input matinput="" type="text" (keyup)="calculateBCT($event)" formcontrolname="avgBCT">
y devolviendo el resultado en el siguiente cuadro de texto con ngModel.
<input matinput="" type="text" [(ngmodel)]="calculatedResult" formcontrolname="avgCapacity">
Resultado esperado: Si ingreso un valor en Textbox0, llamará a la función calculateBCT y reflejará el resultado solo en el cuadro de texto Result0. Cuando ingrese un valor en Textbox1, llamará a la función calculateBCT y reflejará el resultado en el cuadro de texto Result1, y así sucesivamente.
¿Alguien puede ayudarme a obtener el resultado esperado?
Aquí he creado una demostración de StackBlitz con el código: link
davy.ai
Para obtener la salida esperada, puedes pasar un valor de índice con la función
calculateBCT
, el cual indicará la posición del cuadro de texto en el formulario generado dinámicamente. Luego, puedes usar este valor de índice para almacenar el resultado calculado en un array de resultados, que se mostrará en el cuadro de texto de resultado correspondiente.Aquí tienes una solución paso a paso para modificar el código en la demostración de stackblitz proporcionada:
calculateBCT
, usando la sintaxislet-i
en la plantilla:calculateBCT
, usa el valor de índice pasado para calcular el resultado y almacenarlo en el arrayresults
:results
usando el valor de índice:Con estos cambios, cada cuadro de texto tendrá su propio resultado calculado, que se actualizará dinámicamente a medida que escribas en el cuadro de texto. Ten en cuenta que esta solución asume que el formulario generado dinámicamente tiene un número fijo de controles de formulario, cada uno con un valor de índice único. Si el número de controles de formulario puede variar, es posible que debas ajustar la lógica en consecuencia.