【发布时间】:2019-09-30 04:47:55
【问题描述】:
我正在处理一个 Angular 表单。我有一个具有一些属性的域模型。我正在使用ngModel 绑定它们。
在此期间,如果我不使用name 属性,则会出现以下错误。
ERROR 错误:如果在表单标记中使用 ngModel,则必须设置名称属性或必须将表单控件定义为 ngModelOptions 中的“独立”。
示例 1:
<input [(ngModel)]="person.firstName" name="first">
示例 2:
<input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">
为什么我在双向绑定中绑定域模型时需要提及name属性或ngModelOptions?
当我将ngModelOptions="{standalone: true}" 应用于我的所有字段时,无论控件(带有属性required)是否具有价值,我的表单的valid = true 在所有情况下。
我的表格是:
<form #detailForm="ngForm" (ngSubmit)="save(detailForm)" id="ngForm">
</form>
当我的提交按钮在表单之外时:
<input type="button" form="ngForm" class='Button' value="Save" (click)="detailForm.ngSubmit.emit()" [disabled]="!detailForm.form.valid" />
【问题讨论】:
-
我猜你没有使用模板驱动,这就是为什么我们需要写一个
standalone。如果您使用的是模板驱动的表单,则不需要standalone。 -
-
在表单后面,有一个包含 FormControls 的 FormGroup,由名称标识。设置输入的名称属性允许定义表单控件的名称。没有名称,Angular 无法将表单控件注册到表单组中。