Почему я должен упоминать атрибут name или ngModelOptions = "{standalone: ​​true}" при использовании ngModel? - PullRequest
0 голосов
/ 13 мая 2019

Я работаю над угловой формой. У меня есть модель предметной области с некоторыми свойствами. Я связываю их, используя ngModel.

Во время этого, если я не использую атрибут name, я получаю ошибку ниже.

Ошибка: если в теге формы используется ngModel, либо должен быть задан атрибут name, либо элемент управления формы должен быть определен как 'standalone' в ngModelOptions.

Пример 1:

<input [(ngModel)]="person.firstName" name="first">

Пример 2:

<input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">

Почему я должен упоминать атрибут name или ngModelOptions, пока я связываю модель домена в двухсторонней привязке?

Когда я применил ngModelOptions="{standalone: true}" ко всем моим полям, тогда моя форма действительна = true во всех случаях, независимо от того, имеет значение элемент управления ( со свойством required) или нет.

Моя форма:

<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" />

1 Ответ

1 голос
/ 13 мая 2019

Форма - это просто набор пар ключ / значение. Имя - это ключ, который используется для идентификации / получения / установки значения этого элемента управления, поэтому вам необходимо указать имя каждого элемента управления. Когда вы устанавливаете ngModelOptions="{standalone: true}", вы указываете angular , чтобы он не включал этот ввод в форму. Вот почему ваша форма всегда действительна. Это на самом деле пусто.

https://angular.io/api/forms/NgModel#options

...