【发布时间】:2017-02-18 02:32:01
【问题描述】:
我正在使用 Angular2。我的主组件中有这个:
<form #f="ngForm" novalidate (ngSubmit)="save()">
<child [cosField]="cosField" [f]="f"></child>
<button type="submit" [disabled]="!f.valid">Submit</button>
</form>
我有一个从该组件调用的不同子组件。 子组件中的代码是:
<input type="text" name="flow" [(ngModel)]="cosField.value" required #name="ngModel"/>
<div [hidden]="name.valid || (!f.submitted)"
class="error">
An error has occurred.
</div>
我想在子组件中访问这个局部变量 f。基本上用于表单验证。如果子组件中的某些验证失败,则会正确显示“发生错误”消息。但在主组件中, f.valid 仍然保持为真,因此提交按钮始终处于启用状态。但是,如果我将子组件内联到主组件本身,那么一切正常,如果验证失败,提交按钮将被禁用。 有没有办法将表单拆分为多个组件,并且仍然能够使用局部变量 f 有效地验证控件?
【问题讨论】: