Проверить количество полей в угловой форме

У меня есть форма, где модель содержит массив подмоделей, например:

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

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

Надеюсь, это поможет вам.

Другие вопросы по тегам