角度DI跳过直到达到最高水平

时间:2019-01-21 14:34:10

标签: angular reactive-forms

我有一个输入组件,它通过Angular DI查找FormGroupDirective,并且在我再有一个FormGroupDirective之前,它都能正常工作。

换句话说,我可以有这样的东西

FormGroupDirective
--> input 1
--> input 2
--> input 3

这些输入可以成功找到该指令,但是如果我再添加一个指令

RootFormGroupDirective
--> FormGroupDirective1
    --> input 1

输入1检索FormGroupDirective1而不是RootFormGroupDirective

我知道有一个@SkipSelf()装饰器,但是这种装饰器不适用于这种情况,因为输入组件可能被包装成无数个组件。

  

如果在更高级别上还有一个跳过此FormGroupDirective1的方法,或者获得此操作的父指令,那么有没有办法?

我只找到了如何获得父母FormGroup的方法,但这还没有submitted

1 个答案:

答案 0 :(得分:0)

解决方案非常简单并且不明显。您不应在表单上使用多个FormGroupDirectrive。如果我们在API中查看FormGroupDirective,则path中的一行显示

  

返回一个表示该组路径的数组。由于此指令始终位于表单的顶层,因此它始终为空数组。

意味着FormGroupDirective应该是唯一的。我的错误是我试图使用@Input() formGroup通过树将我的formGroup实例向下传递,这会干扰导致问题的指令