如何实现包含大量组件的 Angular 模板驱动表单?
How to implement Angular Template Driven Forms that contains a lot of Components?
这个问题更多的是关于最佳实践和架构。
我从事写在 angular 2 上的项目。
有很多表格,所有这些表格都非常大。很难在那里搜索一些东西。支持它并不容易。
当开始重构某些表单时。我将其拆分为组件列表(并且组件包含另一个组件)。
但是 built-in 验证被破坏了。这是由于 Angular 隔离和 angular awas 无法从组件输入元素中获取错误列表。
互联网上的所有例子都是关于反应形式的。
我知道最好使用反应式形式,但是一次性重写所有代码是不可能的。而且合并两种类型的表格是不正确的。
作为一个解决方案,class 实现了 ValueAcessor 和 Validator,并绑定模型而不是输入变量。
然后用 NgModel 注入所有 childs
并订阅他们的 ngModel.valueChanges.
似乎控件向上层抛出 child 错误。
所以问题是:在 "Angular philosophy" 中创建此类控件是否正确?那么为什么没有人不实施这样的解决方案呢? (我试图找到这样的东西但没有找到。)
是否有一些最佳实践和更正确的解决方案?
ControlValueAccessor是实现表单组件的标准方式。
它适用于 reactivs 和模板驱动的表单。
我试过用@Input
来处理这种组件,但最后还是一团糟。组件只会拆分代码,不会独立
使用ControlValueAccessor
,您可以创建一个只需要模型对象的组件。然后,任何时候您需要表单组件时,您都不会只使用一种类型的表单(响应式或模板驱动),最重要的是,子组件不会驱动表单的构建方式。
这个问题更多的是关于最佳实践和架构。 我从事写在 angular 2 上的项目。 有很多表格,所有这些表格都非常大。很难在那里搜索一些东西。支持它并不容易。
当开始重构某些表单时。我将其拆分为组件列表(并且组件包含另一个组件)。
但是 built-in 验证被破坏了。这是由于 Angular 隔离和 angular awas 无法从组件输入元素中获取错误列表。
互联网上的所有例子都是关于反应形式的。 我知道最好使用反应式形式,但是一次性重写所有代码是不可能的。而且合并两种类型的表格是不正确的。
作为一个解决方案,class 实现了 ValueAcessor 和 Validator,并绑定模型而不是输入变量。 然后用 NgModel 注入所有 childs 并订阅他们的 ngModel.valueChanges.
似乎控件向上层抛出 child 错误。
所以问题是:在 "Angular philosophy" 中创建此类控件是否正确?那么为什么没有人不实施这样的解决方案呢? (我试图找到这样的东西但没有找到。)
是否有一些最佳实践和更正确的解决方案?
ControlValueAccessor是实现表单组件的标准方式。
它适用于 reactivs 和模板驱动的表单。
我试过用@Input
来处理这种组件,但最后还是一团糟。组件只会拆分代码,不会独立
使用ControlValueAccessor
,您可以创建一个只需要模型对象的组件。然后,任何时候您需要表单组件时,您都不会只使用一种类型的表单(响应式或模板驱动),最重要的是,子组件不会驱动表单的构建方式。