代码之家  ›  专栏  ›  技术社区  ›  sebaLinares

如何在FormArray中引用FormGroup而不使用*ngFor:我遇到错误

  •  0
  • sebaLinares  · 技术社区  · 7 年前

    我有两个FormGroup在一个FormArray里

    setRubricaDosForm: FormGroup;
    
    ngOnInit() {
      this.setRubricaDosForm = this.fb.group({
        rubrica: this.fb.array([
          this.fb.group({
            nombreUno: ["", Validators.required],
            puntajeUno: [
              "",
              [Validators.required, Validators.pattern("/^-?(0|[1-9]d*)?$/")]
            ]
          }),
          this.fb.group({
            nombreDos: ["", Validators.required],
            puntajeDos: [0]
          })
        ])
      });
    

    }

    //a getter for the array controls
    get rubrica(){
      return this.setRubricaDosForm.get('rubrica') as FormArray;
    }
    

    然后在我的模板中我有这个。

    <form [formGroup]="setRubricaDosForm" novalidate (ngSubmit)="submit()">
      <div formArrayName="rubrica">
        //here i've also tried formGroupName="setRubricasDosForm.controls[0].get('rubrica').controls[0]
        <div [formGroupName]="rubrica.controls[0]"> 
          <input formControlName="nombreUno">
          <input formControlName="puntajeUno">
        </div>
        <div [formGroupName]="rubrica.controls[1]"> 
          <input formControlName="nombreDos">
          <input formControlName="puntajeDos">
        </div>
      </div>
    </form>
    

    我明白了 ERROR Error: Cannot find control with path: 'rubrica -> [object Object]'

    there's no get method

    我不使用*ngFor,因为我只需要这两个FormGroup,我想把它们放在一个FormArray中,我从一开始就没有尝试过声明两个不同的FormGroup(我想这样做,除非没有办法)。

    当做

    1 回复  |  直到 7 年前
        1
  •  2
  •   Jules Pollender    7 年前

    您正在使用直接引用FormGroup rubrica.controls[0] 所以使用 [formGroup] 而不是 [formGroupName] 它应该像一个符咒一样工作。

    <form [formGroup]="setRubricaDosForm" novalidate (ngSubmit)="submit()">
      <div formArrayName="rubrica">
        <div [formGroup]="rubrica.controls[0]"> 
          <input formControlName="nombreUno">
          <input formControlName="puntajeUno">
        </div>
        <div [formGroup]="rubrica.controls[1]"> 
          <input formControlName="nombreDos">
          <input formControlName="puntajeDos">
        </div>
      </div>
    </form>
    
    推荐文章