Angular 当formGroup.length>;1.

Angular 当formGroup.length>;1.,angular,typescript,Angular,Typescript,在我的表单组之外,我有以下ngModel输入: <input [class.disabled]="controls[0] > 0" [(ngModel)]="produto.estoque" type="text"> 当我遵循以下步骤时,一切都很顺利: 添加新的表单组 在输入estoque_变量中填充值 添加其他表单组 填充第二个输入estoque_variacao的值 总和在输入produto.estoque中正确显示 问题是当我遵循以下步骤时: 添加新的表单组 不要填充第

在我的表单组之外,我有以下ngModel输入:

<input [class.disabled]="controls[0] > 0" [(ngModel)]="produto.estoque" type="text">
当我遵循以下步骤时,一切都很顺利:

  • 添加新的表单组
  • 在输入estoque_变量中填充值
  • 添加其他表单组
  • 填充第二个输入estoque_variacao的值
  • 总和在输入produto.estoque中正确显示
  • 问题是当我遵循以下步骤时:

  • 添加新的表单组
  • 不要填充第一个formGroup的estoque_Variaco值
  • 添加新的表单组
  • 尝试在我的produto.estoque中填写表单组返回NAN的第二个输入的第一个输入的estoque_variacao
  • 创建formGroup的我的函数:

    createFormGroup(): FormGroup {
        return this.fb.group({
             estoque_variacao: 0
    }
    
    我怎样才能解决这个问题

    @编辑:

    为我工作:

      soma(){
        let sum = 0;
    
        const value = this.variacaoForm.value.variacoes;
    
        for(const key in value){
          sum += (+value[key].estoque_variacao);
        }
    
        this.produto.estoque = sum
      }
    
    当我删除formgroup时,我需要降低输入值:

    this.produto.estoque = this.produto.estoque - this.variacaoForm.value.variacoes[index].estoque_variacao
    

    您不应该同时使用ngModel和FormControlName。事实上,您不应该同时使用模板驱动表单和反应式表单。这是两种不同的方法,您需要为任何给定的情况选择一种

    下面是一个例子:


    希望这有帮助

    我知道,但我不知道没有NGModel的formGroup求和的其他方法。如果您有一个formGroup,您可以使用
    variacaForm.value从fromGroup获取值
    并继续进行。我已经用一个示例更新了主要答案。请看一下好的,我删除了ngModel并更改了soma()函数,请参见我的编辑,但是当我添加多个formGroup并尝试填充estoque变量时,我的produto estoque仍然显示NaN。ngModel+FormControlName可能没有问题。我将尝试使用您的函数
      soma(){
        let sum = 0;
    
        const value = this.variacaoForm.value.variacoes;
    
        for(const key in value){
          sum += (+value[key].estoque_variacao);
        }
    
        this.produto.estoque = sum
      }
    
    this.produto.estoque = this.produto.estoque - this.variacaoForm.value.variacoes[index].estoque_variacao