javascript - Angular 反应式表单 - 当子 FormGroup 更改时手动触发对父 FormGroup 的验证
问题描述
我有一个 Angular 组件,它定义了一个FormGroup
,它有一个嵌套FormGroup
作为它的控件之一。
子组件FormGroup
作为@Input
参数传递给子组件,并且子组件内部的某些控件上有验证器FormGroup
。
出于某种原因,父valid
组件的属性仅在我更新子组件中的值时更新,然后对父组件的其中一个输入进行随机更改(例如向输入添加额外的空间)。 FormGroup
FormGroup
设置相当复杂(根据特定条件从子FormGroup 的控件中添加或删除验证器,这可能是验证没有自动发生的原因)。
一旦孩子中的任何内容发生变化,我如何手动触发父母FormGroup
重新验证FormGroup
?我在子组件中试过这个:
ngOnInit()
this.myForm.valueChanges.subscribe(val => {
this.myForm.updateValueAndValidity({onlySelf: false, emitEvent: true})
});
child
这应该会在任何输入发生变化时触发 FormGroup的重新验证,并将事件广播到parent
组件,这应该会触发对 parent 的重新验证FormGroup
。我得到了某种堆栈溢出错误,因为这会导致无限循环。
如何触发父母FormGroup
自动重新验证?
解决方案
this.FormGroup.updateValueAndValidity();
updateValueAndValidity() - 这是 FormGroup 的默认方法
推荐阅读
- python - CXFreeze:ModuleNotFoundError:没有名为“skimage.feature._orb_descriptor_positions”的模块
- reactjs - 错误:我的模态组件超出了最大更新深度
- amazon-web-services - 为 Neptune 构建 http REST API 请求的 AWS 授权标头
- node.js - 如何在 Nuxt 的 serverMiddleware 中使用正则表达式定义动态路由路径?
- c# - 视图中的 Asp.Net MVC Cast 模型
- javascript - 如何获取数组Javascript中第二小的值的等效标签名称
- python - 如何使用 Python 和 BeautifulSoup 从本网站提取表格
- python - 使用 globals() 或 locals() 来避免创建很少需要的变量是个好主意吗?
- javascript - @import "@" 导致 vue 项目中断
- android - 导航组件片段在第一次执行后卡在运行最后一行代码