Проверить количество полей в угловой форме
У меня есть форма, где модель содержит массив подмоделей, например:
<form name="form1">
<div ng-repeat="sub in model.submodels">
<input ng-model="sub.name" required>
<button ng-click="delSubmodel($index)">x</button>
</div>
<button ng-click="addSubmodel()">+</button>
<button ng-disabled="form1.$invalid" type="submit">Save</button>
</form>
Как я могу сделать форму недействительной, когда нет полей ввода (или, вообще говоря, когда количество полей ввода меньше или больше некоторого значения)
Обновление: спасибо за ответы, я надеюсь, что это можно сделать за пределами контроллера.
1 ответ
Хорошо, я только что получил то, чего вы хотите достичь, вам нужно будет добавить в форму ограничение, которое является размером подмодели, поэтому в вашем методе отправки:
Прежде чем что-то делать
$scope.form1.$setValidity('size', model.subModels.length <= 0);
Это установит правильность формы в false, если ваше условие ложно, или наоборот, вы также можете показать сообщение, чтобы уведомить об этом пользователя, добавив это:
<form name="form1">
<div ng-repeat="sub in model.submodels">
<input ng-model="sub.name" required>
<button ng-click="delSubmodel($index)">x</button>
</div>
<input type="hidden" name="size" ng-model="model.subModels.length" />
<button ng-click="addSubmodel()">+</button>
<button ng-disabled="form1.$invalid" type="submit">Save</button>
Вы можете проверить этот пример, если чувствуете, что плохо поняли мою точку зрения, которая делает то же самое, просто изменяя достоверность для одного ввода.
Надеюсь, это поможет вам.