angular 6基于父窗体值需要设置验证器
我有一个嵌套的formGroup,希望根据父值设置一个验证器(必需)angular 6基于父窗体值需要设置验证器,angular,validation,conditional-statements,Angular,Validation,Conditional Statements,我有一个嵌套的formGroup,希望根据父值设置一个验证器(必需) this.userForm = fb.group({ audio: [''], audioSet: fb.group({ producer: [0, this.userForm.get('audio').value ? Validators.required : ''] }), }) 但是this.userForm.get('audio').value这次抛出一个未定义的值(正常) 因此,我将valueC
this.userForm = fb.group({
audio: [''],
audioSet: fb.group({
producer: [0, this.userForm.get('audio').value ? Validators.required : '']
}),
})
但是this.userForm.get('audio').value这次抛出一个未定义的值(正常)
因此,我将valueChange设置为ValueValidator:
this.userForm.controls['audio'].valueChanges.subscribe(result => {
const ctrl = this.userForm.get(['audioSet', 'producer']);
if (result) {
ctrl.setValidators(Validators.required);
ctrl.updateValueAndValidity();
} else {
ctrl.setValidators(null);
ctrl.updateValueAndValidity();
}
});
我的嵌套formGroup中有很多值,
这是实现这一目标的更好的方式还是新的方式
您应该将get
调用为函数
,但您将get
视为一个数组
改变它
this.userForm.get['audio'].value
到
我在formBuilder中遇到此错误:错误类型错误:无法读取undefinedIt的属性“get”,这意味着formBuilder未被注入到构造函数中。打印登录构造函数,检查它是否已初始化或未定义。
fb已初始化:构造函数(fb:FormBuilder),我在构造函数中使用它。因此,请将其设置为私有,并更新我的问题。谢谢
this.userForm.get['audio'].value
this.userForm.get('audio').value