【发布时间】:2018-04-02 06:41:02
【问题描述】:
我最近学习了 NgRx(实际上还在尝试学习)并将我们现有的项目更新为 Angular 5 和 ngrx 结构。到目前为止一切顺利,但我们的一个页面有一个数据表,其中包含超过 1k 多个表单字段。
我通常使用响应式表单从状态切片填充表单字段并在用户发送表单时更新对状态的更改,但是使用这么多表单字段创建表单控件可能会非常昂贵并且不想减慢速度页面,似乎只使用带有 NgRx 结构的基本文本框和 ngModel 是不行的
我怎样才能以 NgRx 的方式解决这个问题。提前谢谢你
【问题讨论】:
-
天哪,什么样的应用程序有超过1000个表单域的表单?无论如何,至于您的问题,使用反应式表单或模板驱动的表单将创建相同数量的
FormControl对象,它们提供的灵活性以及您是否必须自己手动实例化FormControls 不同,反应式form 最适合动态形式。 ngrx store 只是一个状态管理器,与 redux store 非常相似(ngrx store 的灵感来自于 redux store btw),所以并没有真正的“ngrx 方式” -
是模板驱动或响应式都创建了这些表单对象,并且该页面用于供应商折扣,因此用户可以过滤和更新一千多个供应商。旧版本使用 ngModel 更新这些表单字段。 (我认为基本文本字段和 ngModel)并没有产生那么多开销。但是使用 formControls 只是让我害怕。可能最好将所有这些都放在一个表单数组中,然后只听变化。
-
好吧,首先,使用
ngModel,angular会自动创建FormControls并将它们附加到你的inputHTML元素上,所以如果你使用的是响应式表单,你必须做所有你自己,从逻辑上讲,它不应该引起任何性能问题。同样,不要过早优化,测量并查看与模板驱动的表单相比,反应式表单是否会导致性能问题,但我非常确定使用反应式表单不会让您的表单变慢 -
Himm 我不知道使用 ngModel 创建表单控件创建,但无论如何,另一个问题是创建所有这些表单控件并将它们添加到表单组。可能我也应该使用循环来做到这一点(不可能一个一个地创建所有这些)谢谢,如果您回答问题,我将标记为答案
标签: ngrx angular-reactive-forms