【发布时间】:2023-03-07 23:44:02
【问题描述】:
我们在所有组件中都使用 ChangeDetectionStrategy Onpush,因此我们遵循转储/智能组件方法,因此我们将所有逻辑部分保留在服务/外观端。
现在我们需要使用 Reactive Forms、FormGroup、FormArray 来生成动态控件,
所以我们在服务端准备FormGroup和FormArray,并将它们作为输入参数传递给转储组件,在这种情况下我不能将它们作为可观察的行为主体传递,我直接作为输入参数传递。
如果 FormArray 中发生任何变化,由于 OnPush changeDectionStrategy,它不会反映在转储组件中。
我在这个 stackblitz 中模拟了实现
在这个示例中,我在服务文件中准备了FormArray、FormGroup,并通过智能组件传递给dump组件。
我在行为主体和抽象控制方面找不到合适的样本,
如果可以将FormArray,FormGroup作为Observable传递,请帮助我知道。
【问题讨论】:
-
我不会通过
@Input参数传递表单控件。我会在智能组件中创建 root FormGroup,在哑组件中创建子控件。 -
如果我们将 FornGroup 和 FormArray 保留在 Dump 组件中,它会起作用,但是,我问是否有任何可能的方式作为输入参数传递,如果我们拆分 FormGrou 和 FormArray,我们可能丢失可重复使用的转储组件,我正确吗?
-
我不确定您是否会以这种方式丢失某些东西。使用这种方法,服务不再负责创建子表单控件,而是创建哑组件。
-
好的,但是,我们不能从服务中传递 FormArray,不是吗?
-
可能有办法做到这一点,但 IMO 这不是最明智的方法
标签: angular rxjs angular-reactive-forms angular-forms rxjs-observables