【发布时间】:2017-09-02 09:24:44
【问题描述】:
我想创建一个角度为 2 的大表单。但我想创建这个包含多个组件的表单,如下例所示。
应用程序组件
<form novalidate #form1="ngForm" [formGroup]="myForm">
<div>
<address></address>
</div>
<div>
<input type="text" ngModel required/>
</div>
<input type="submit" [disabled]="!form1.form.valid" > </form>
地址组件
<div>
<input type="text" ngModel required/> </div>
当我使用上面的代码时,它在我需要的浏览器中可见,但是当我删除地址组件中的文本时,提交按钮没有被禁用。
但是当我删除应用程序组件输入框中的文本时,该按钮被正确禁用。
【问题讨论】:
-
你的地址组件是什么样的?是 ControlValueAccessor 吗?
-
只是一个简单的组件,类体中没有任何内容
-
尝试将其添加到模板的底部:{{ form1.value | json }} 并查看是否包含两个输入元素或仅一个。我知道不能将表单拆分为随路由器加载的组件。它也可能无法在嵌套组件中“找到”项目。
-
@DeborahK 是的,您是来自地址组件的正确元素,但未在 json 中显示。有什么办法可以实现吗?
-
虽然 AJT82 的回答很棒而且很有帮助,但它是一种采用其他方法的解决方案,而不是要求的。我提出了一个解决方案如何在多个组件上实现表单here:(进一步向下)。
标签: angular typescript angular-forms