У меня такой код:
<h1>New Book</h1>
<form #f = "ngForm" (ngSubmit) = "submit(f)">
<div class = "form-group">
<label for = "group">Group</label>
<select id = "group" class = "form-control" (change) = "onGroupChange()" [(ngModel)] = "groupId" name = "groupId">
<option value = ""></option>
<option *ngFor = "let g of groups" value = "{{g.id}}">{{g.name}}</option>
</select>
</div>
<div class = "form-group">
<label for = "registrationNumber">Registration Number</label>
<input required ngModel name = "registrationNumber" #registrationNumber = "ngModel" id = "registrationNumber" class = "form-control" value = {{regId}}/>
<div class = "alert alert-danger" *ngIf = "!registrationNumber && !registrationNumber.valid">Registration Number is required.</div>
</div>
<button class = "btn btn-primary" [disabled] = "!f.valid">Save</button>
</form>
Как видите, кнопка неактивна, если одно из значений формы недопустимо. Проблема в том, что регистрационный номер заполняется, когда вы выбираете группу в раскрывающемся списке группы. Даже после заполнения поля регистрационного номера кнопка сохранения по-прежнему неактивна. Какую проверку я должен указать в * ngIf регистрационного номера, чтобы сообщить angular о необходимости пометить поле как нормально, если поле имеет значение.
Другими словами, что должно быть в приведенном ниже ngIf?
<div class = "alert alert-danger" *ngIf = " ? "**>Registration Number is required.</div>
</div>





Вам нужно установить значение с помощью ngModel, и тогда проверка должна работать должным образом.
<input required [ngModel] = "regId" name = "registrationNumber" #registrationNumber = "ngModel" id = "registrationNumber" class = "form-control"/>
Кроме того, вы можете упростить свой ngIf, используя оператор объединения с нулем.
<div class = "alert alert-danger" *ngIf = "!registrationNumber?.valid">Registration Number is required.</div>
Угловые формы используют значение модели для определения достоверности. Когда вы привязываетесь к свойству значения html, ngModel не знает, что вход имеет значение. Кроме того, синтаксис [ngModel] - это просто входное значение, поэтому вы говорите ему использовать это значение изначально, но оно будет перезаписано и не будет синхронизироваться, когда пользователь изменит его.
Я немного тебя достал. Не могли бы вы указать мне на учебное пособие, которое могло бы объяснить это подробно?
Соответствующая документация: Отслеживайте состояние и срок действия элемента управления с помощью ngModel
Да, это так. Могу я узнать, как при добавлении [ngModel] проверка работает? Я имею в виду, какая здесь связь?