如何在控件的嵌套表单组中获取父表单组。在验证控件时,我需要一个兄弟控制值。这两个控件都是formgroup的一部分,formgroup是formArray的一部分。 我知道我们有root,它提供了根元素。如何获得给定表单控件的直接父级。
答案 0 :(得分:5)
您可以使用FormControl
访问给定.parent
的父级,方法与.root
相同。
答案 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。