我已经苦恼了几天,想找一个适合我的用例的良好模式。我有一个非常复杂的响应式表单,充满了嵌套组件,一些字段是必填的,一些字段可能根据特定条件出现等等... 这给代码维护带来了很大的问题。我迄今为止使用的方法是将formControl传递给子组件并从那里进行填充,但随着表单大小的增加,调试变得非常困难。对于该表单来说,必须在整个表单提交时对所有嵌套字段进行验证,并标记任何未插入但必需的字段为markAsTouched。我已经探索了两种方法,但这两种方法似乎都没有什么帮助:
- 控制值访问器(Control Value Accessor):这个概念很完美,逻辑在子组件间分割得非常好,而不需要父级关注它,但缺点是子控件没有暴露,我无法标记所有子表单以显示相应的错误。
- 控制容器(Control Container):这种方法似乎需要在父级别定义所有控件,但是由于表单非常大,这似乎真的会产生反作用,而且并不能真正解决我的问题。
我想知道是否有人有这样的表单经验,能够提供一些指导,告诉我在这种情况下最佳实践是什么。
我已经用Control Container制作了一个非常简单的stackblitz示例,只有一个子组件,但不幸的是我无法使其运行 https://stackblitz.com/edit/angular-ivy-axbgr5