angular 6基于父窗体值需要设置验证器

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

我有一个嵌套的formGroup,希望根据父值设置一个验证器(必需)

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