假设我有一组具有父子关系的组件。该 结构如下: 的 [A] - > [B] - > [C] - > [d] (即)A是B的父母, B是C的父, C是D的父母。 我需要检查组件 D 中模板驱动表单的有效性 组件 A 。 我尝试过使用@viewchild()。 在我的 componentA.html
中
<form #mainform ="ngform">
<button
[disabled]= "componentB?.ComponentC?.ComponentD?.form?.invalid">
</button>
</form>
这种方法不起作用。
如何在不使用事件发射器的情况下从A到D实现此目的?
答案 0 :(得分:0)
嵌套在组件树中的深度并不重要。它是如何嵌套在表单树中的。
将子控件命名为child
,grandchild
和grandgrandchild
,您可以执行以下操作:
<form #mainform="ngform">
<button [disabled]="mainform.control.get('child.grandchild.grandgrandchild').invalid">
</button>
</form>
我们使用mainform.control
来获取对基础FormGroup
的访问权限。现在我们可以访问FormGroup
类上的所有方法。您可以看到完整列表here。
接下来,我们使用get
方法遍历表单树并到达子控件。
如果您有这样的表单树:
mainform: {
child: {
grandchild: {
grandChild
}
}
}
其中mainform
,child
和grandchild
为FromGroups
和grandgrandchild is a
FormControl`。
您可以输入grandgrandchild
mainForm.get('child.grandchild.grandchild')