【发布时间】:2017-01-15 17:13:24
【问题描述】:
如何在控件的嵌套表单组中获取父表单组。在验证控件时,我需要一个兄弟控件值。这两个控件都是 formgroup 的一部分,formgroup 是 formArray 的一部分。 我知道我们有根,它给出了根元素。如何获得给定表单控件的直接父级。
【问题讨论】:
-
在您的情况下,FormGroup 应该负责通过引用另一个控件的值来验证一个控件的值。
如何在控件的嵌套表单组中获取父表单组。在验证控件时,我需要一个兄弟控件值。这两个控件都是 formgroup 的一部分,formgroup 是 formArray 的一部分。 我知道我们有根,它给出了根元素。如何获得给定表单控件的直接父级。
【问题讨论】:
您可以使用.parent 访问给定FormControl 的父级,就像使用.root 一样。
【讨论】:
我遇到了同样的问题。我们有一个这样的嵌套表单组:
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 之前,您必须检查 FormGroups 是否已创建。
【讨论】: