首页 > 解决方案 > Angular 反应式表单 - 当子 FormGroup 更改时手动触发对父 FormGroup 的验证

问题描述

我有一个 Angular 组件,它定义了一个FormGroup,它有一个嵌套FormGroup作为它的控件之一。

子组件FormGroup作为@Input参数传递给子组件,并且子组件内部的某些控件上有验证器FormGroup

出于某种原因,valid组件的属性仅在我更新子组件中的值时更新,然后对父组件的其中一个输入进行随机更改(例如向输入添加额外的空间)。 FormGroupFormGroup

设置相当复杂(根据特定条件从子FormGroup 的控件中添加或删除验证器,这可能是验证没有自动发生的原因)。

一旦孩子中的任何内容发生变化,我如何手动触发父母FormGroup重新验证FormGroup我在子组件中试过这个:

ngOnInit()

  this.myForm.valueChanges.subscribe(val => {
      this.myForm.updateValueAndValidity({onlySelf: false, emitEvent: true})
  });

child这应该会在任何输入发生变化时触发 FormGroup的重新验证,并将事件广播到parent组件,这应该会触发对 parent 的重新验证FormGroup。我得到了某种堆栈溢出错误,因为这会导致无限循环。

如何触发父母FormGroup自动重新验证?

标签: javascriptangularangular-reactive-formsangular-validation

解决方案


this.FormGroup.updateValueAndValidity();


updateValueAndValidity() - 这是 FormGroup 的默认方法


推荐阅读