如何获得angular2 formcontrol parent

时间:2016-09-07 21:56:38

标签: angular angular2-forms

如何在控件的嵌套表单组中获取父表单组。在验证控件时,我需要一个兄弟控制值。这两个控件都是formgroup的一部分,formgroup是formArray的一部分。 我知道我们有root,它提供了根元素。如何获得给定表单控件的直接父级。

2 个答案:

答案 0 :(得分:5)

您可以使用FormControl访问给定.parent的父级,方法与.root相同。

以下是文档:https://angular.io/api/forms/AbstractControl#parent

答案 1 :(得分:3)

我有同样的问题。我们有一个这样的嵌套表单组:

FormGroup1:
 - FormControl1
 - FormControl2
 - FormGroup2
   - FormControl3
   - FormControl4

因此在FormGroup2.FormControl3的自定义验证器中,您可以找到像FormGroup1这样的根:

export class CustomValidator {
    static FormControl3Valid() {
    return function (input: FormControl) {
      if (!input.root || !input.parent) {
        return null;
      }

      const root = input.root as FormGroup;

      if (root.get('FormControl1').value === 'someValue1' &&
        root.get('FormGroup2').get('FormControl4').value === 'someValue2') {
        return { 'required': true };
      }

      return null;
    };
  }
}

只要记住这段代码就可以了:

if (!input.root || !input.parent) {
   return null;
}

在导航到root或parent之前,必须检查是否已创建FormGroup。