这个问题更多地是关于最佳实践和体系结构的。 我从事的是在angular 2上编写的项目。 形式很多,所有这些形式都很大。很难在其中进行搜索。而且要支持它并不容易。
开始重构某些表格时。我将其拆分为组件列表(并且组件包含其他组件)。
但是内置验证被破坏了。这是由于角度隔离和角度波峰无法从组件输入元素获取错误列表。
互联网上的所有例子都是关于反应形式的。 我知道最好使用反应形式,但这不可能一次重写所有代码。合并两种类型的表单是不正确的。
作为解决方案,制作一个实现ValueAcessor和Validator的类,并绑定Model而不是Input变量。 然后使用NgModel注入所有子项 并订阅他们的ngModel.valueChanges。
好像控件将子级错误抛出到更高级别。
这样的问题是:在“ Angular哲学”中创建这样的控件是否正确?那么,为什么没有人不实施这种解决方案呢? (我试图找到这样的东西但没有找到。)
也许会有一些最佳实践和更正确的解决方案?
答案 0 :(得分:1)
ControlValueAccessor是实现表单组件的标准方法。
它与重新激活和模板驱动的表单一起使用。
我尝试使用@Input
处理这种组件,最后一团糟。组件只会拆分代码,而不会独立。
使用ControlValueAccessor
,可以创建只需要模型对象的组件。然后,在任何时候需要表单组件时,您都不会只停留在一种类型的表单上(重新激活或模板驱动),而最重要的是,子组件不会驱动表单的构建方式。