0
我想在angular2中创建一个验证器,我需要检查另一个表单域的值。我尝试过两种场景,我试图做到这一点。Angular2验证器依赖于另一个表单域
方案1,表单域看起来是这样的:
Form = this._fb.group({
ansat: ['', [<any>Validators.required]],
helbred: ['', this.someValidator('ansat')],
});
我有上述两个领域,我希望能够检查“安萨特”的值的验证功能“someValidator”。 someValidator看起来是这样的:
someValidator(key: string) {
return (group: FormGroup) => {
console.log(group);
console.log(group.controls[key].value);
}
}
在我的功能,工作组包括所有为我formgroup正确的信息,但“控制”是不确定的,这意味着我不能去的“安萨特值
方案。 2,表单域看起来是这样的:
this.myForm = this._fb.group({
ansat: ['', [<any>Validators.required]],
helbred: ['', c => Validators.compose([
this.someValidator(c,
group => group.controls['ansat'].value === 0
),
])]
});
这是我someValidator功能:
conditional(c, conditional) {
console.log(conditional);
console.log(c);
if(c.parent != undefined || c._parent != undefined){
if(c._parent.controls['ansat'].value === 0){
console.log(c._parent.controls['ansat'].value);
}
}
return null;
}
在这种情况下,控件“c”具有正确的信息,并且包含一个父组,它是分配给它的组,但我无法访问它以尝试将它的兄弟放在同一组中。
而在条件参数的情况下,我尝试通过一个我无法让它工作的函数来发送该组。
问题:我希望能够访问我称之为“helbred”的验证程序中的“ansat”值。我该怎么做呢?
任何帮助,非常感谢!
感谢您的建议!但我有个问题。使用这个我想使字段“helbred”必需如果ansat为0,而不是返回null(有效)。我将如何做到这一点? – Vanquiza
在我发送的调度程序中,someValidator函数可以检查控件的值。看一个简单的例子更新 – Riv
嗯,我会尝试重新翻译。在我的情况下,我必须能够使用条件验证。在“required”的情况下,我想以某种方式返回“Validators.required”。这可能吗? – Vanquiza