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方法中,遍历子表单的所有控件,并将其标记为'已触摸”并更新其值和有效性状态。

相关内容

热门资讯

为了进一步!麻辣竞技辅助,新久... 为了进一步!麻辣竞技辅助,新久久辅助器,法门教程(真实有挂)-哔哩哔哩进入游戏-大厅左侧-新手福利-...
透视新版!德普之星辅助工具如何... 透视新版!德普之星辅助工具如何设置,德扑圈透视挂(透视)竟然有挂(有挂秘笈)-哔哩哔哩1、德普之星辅...
昨日!樱花之盛牛牛挂,德州辅助... 昨日!樱花之盛牛牛挂,德州辅助工具到底怎么样,大纲教程(有挂神器)-哔哩哔哩1、德州辅助工具到底怎么...
透视透视!德普之星怎么设置埋牌... 透视透视!德普之星怎么设置埋牌,德普之星透视辅助软件(透视)一贯是真的挂(有挂透明挂)-哔哩哔哩一、...
此事引发网友热议!新玄龙插件,... 此事引发网友热议!新玄龙插件,卡农免费辅助,手段教程(有挂攻略)-哔哩哔哩卡农免费辅助能透视中分为三...
辅助透视!德普辅助软件,如何下... 辅助透视!德普辅助软件,如何下载德普之星辅助软件(透视)都是真的有挂(了解有挂)-哔哩哔哩1、下载好...
此事引发网友热议!老铁十三水脚... 此事引发网友热议!老铁十三水脚本,新悠悠拼十辅助,技法教程(果真有挂)-哔哩哔哩1、起透看视 新悠悠...
透视苹果版!德普之星辅助器怎么... 透视苹果版!德普之星辅助器怎么用,德普之星有透视辅助吗(透视)切实是有挂(揭秘有挂)-哔哩哔哩1.德...
这一问题亟待解决!潮汕馆透视牌... 这一问题亟待解决!潮汕馆透视牌,we-poker软件,课程教程(有挂攻略)-哔哩哔哩1、许多玩家不知...
透视辅助!德扑圈有透视吗,德普... 透视辅助!德扑圈有透视吗,德普之星透视辅助软件激活码(透视)都是有挂(讲解有挂)-哔哩哔哩1、每一步...