从嵌套表单组获取控件

时间:2017-11-29 21:13:33

标签: angular angular-reactive-forms

我有一个FormGroup,嵌套在另一个FormGroup中,我想用get()来获取某个控件。

我尝试了以下解决方案,但该方法无效:

formGroup.get('formGroupKey').get('formControlKey');

但这会引发错误。第一个get()工作(并正确返回一个FormGroup),但第二个get抛出一个异常(path.split不是一个函数)

知道如何解决这个问题吗?

@Update

我现在用这种方式解决了它(虽然这不是一个很好的解决方案):

formGroup.get(tab.id)['controls'][segment.id];

2 个答案:

答案 0 :(得分:4)

这应该有效:this.formGroup.get(varibaleKey).get(variableKey2)

以下是一些代码:

import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit  {
  name = 'Angular 5';

  form: FormGroup;

  key1: string = 'test1';
  key2: string = 'test2';

  constructor(private formBuilder: FormBuilder) {}

  ngOnInit() {
    this.form = this.formBuilder.group({
      test1: this.formBuilder.group({
        test2: ['testValue']
      }),
      another: ['testValue']
    });
    console.log(this.form.get(this.key1).get(this.key2));
  }
}

以下是一个示例:https://stackblitz.com/edit/angular-ipman8

答案 1 :(得分:1)

一种简洁的访问方式是

formGroup.get('formGroupKey.formControlKey');