Angular响应式表单在子组件上提交时无法触发验证。
创始人
2024-10-30 08:00:30
0

在子组件上手动触发验证,可以通过使用@ViewChild装饰器获取每个子组件的表单控件,并在提交钩子中手动调用其验证方法。以下是示例代码:

父组件模板:

父组件代码:

export class ParentComponent implements OnInit {
  parentForm: FormGroup;
  @ViewChild(ChildComponent) childComponent: ChildComponent;

  constructor(private fb: FormBuilder) {}

  ngOnInit() {
    this.parentForm = this.fb.group({
      child: ['', Validators.required]
    });
  }

  onSubmit() {
    if (this.parentForm.valid && this.childComponent.childForm.valid) {
      console.log('Form submitted successfully');
    } else {
      console.log('Form submission failed');
    }
  }
}

子组件模板:

子组件代码:

export class ChildComponent {
  childForm: FormGroup;

  constructor(private fb: FormBuilder) {}

  ngOnInit() {
    this.childForm = this.fb.group({
      name: ['', Validators.required]
    });
  }

  validate() {
    Object.values(this.childForm.controls).forEach(control => {
      control.markAsTouched();
      control.updateValueAndValidity();
    });
  }
}

在父组件中,使用@ViewChild来获取ChildComponent实例并存储在childComponent属性中。在提交钩子中,首先检查父表单是否有效,然后检查子组件的表单是否有效。如果子组件表单无效,则手动调用其validate方法以触发验证。在validate方法中,遍历子表单的所有控件,并将其标记为'已触摸”并更新其值和有效性状态。

相关内容

热门资讯

透视透视"德普辅助器... 透视透视"德普辅助器怎么用"一贯是有辅助脚本(哔哩哔哩)德普辅助器怎么用破解侠是真的助透视。每个模型...
透视普及"hhpok... 透视普及"hhpoker到底可以作必弊吗"都是真的是有辅助app(哔哩哔哩)1.hhpoker到底可...
透视详细"pokem... 透视详细"pokemmo手机版透视脚本"确实是真的辅助挂(哔哩哔哩)1、pokemmo手机版透视脚本...
透视推荐"wepok... 透视推荐"wepoker公共底牌"本来存在有辅助挂(哔哩哔哩)1、wepoker公共底牌脚本辅助下载...
透视分享"poker... 透视分享"pokerworld破解版下载"原来是有辅助方法(哔哩哔哩)1、下载好pokerworld...
透视必备"哈糖大菠萝... 透视必备"哈糖大菠萝挂法"切实真的有辅助技巧(哔哩哔哩)1、每一步都需要思考,不同水平的挑战哈糖大菠...
透视必备"hhpok... 透视必备"hhpoker辅助器"都是是有辅助教程(哔哩哔哩)1、每一步都需要思考,不同水平的挑战会更...
透视透视"poker... 透视透视"pokernow辅助控制"果然是有辅助脚本(哔哩哔哩)在进入pokernow辅助控制软件靠...
透视科普"wepok... 透视科普"wepoker-h5下载"都是存在有辅助工具(哔哩哔哩)1、wepoker-h5下载免费脚...
透视普及"德普之星透... 透视普及"德普之星透视免费"切实存在有辅助器(哔哩哔哩)一、德普之星透视免费游戏安装教程牌型概率发牌...