【发布时间】:2020-10-21 00:34:25
【问题描述】:
我在这个问题上看到了一些 StackOverflow 问题,但似乎没有一个问题的答案有效。
我正在使用 Angular 构建一个动态创建的响应式表单。 StackBlitz here 。用户可以选择在组内添加“组”和“条件”。每个组都可以使用 FormArrays 进一步嵌套。
表单按预期工作。以下是表格的主要部分:
- AppComponent:主要的父组件
- GroupControlComponent:父级的子级。处理所有组对象
- ConditionFormComponent:GroupControlComponent 的子组件。照顾组内的所有条件
这是一个基本对象的样子:
{
// appcomponent level
"statement": {
//groupcontrol level
"groups": [
{
// conditionform level
"conjunctor": null,
"conditions": [
{
"variable": null
}
],
"groups": []
}
]
}
}
当我设置验证时,我希望一切都是必需的。所以我通过 FormBuilder,在父组件和子组件上,并在所有表单控件上将 Validators.required 设置为 true。
this._fb.control({
conjunctor: null,
conditions: [[], Validators.required],
groups: [[], Validators.required]
})
(所有控件都是这种情况)
问题是,现在的表单总是是有效的。即使表格实际上无效。使用嵌套子组件时是否可以检查表单有效性?
如果需要,以下是有关此特定表格的更多信息:
Cannot Find Control with Path Using ngIf on Recursive Angular Form
Angular Deeply Nested Reactive Form: Cannot find control with path on nested FormArray
【问题讨论】:
-
我感觉这只是在您的控件中实现验证器接口的问题。我想我可以稍后再看看,但如果你在那之前成功了,请告诉我。
-
会的。我也会调查一下。截至目前,我正在尝试的方法似乎过于复杂。检查子组件中的表单验证,然后向父组件发送一个 true 或 false 备份。并非在所有情况下都有效,我认为有更好的方法
标签: angular typescript angular-forms