Angularjs 以角度形式验证字段计数

Angularjs 以角度形式验证字段计数,angularjs,validation,angularjs-validation,angularjs-forms,Angularjs,Validation,Angularjs Validation,Angularjs Forms,我有一个表单,其中模型包含一系列子模型,如下所示: <form name="form1"> <div ng-repeat="sub in model.submodels"> <input ng-model="sub.name" required> <button ng-click="delSubmodel($index)">x</button> </div> <b

我有一个表单,其中模型包含一系列子模型,如下所示:

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

x
+
拯救
当没有输入字段时(或者通常,当输入字段的计数小于/大于某个值时),如何使表单无效


更新:感谢您的回复,我希望这可以在控制器之外完成。

好的,我刚刚得到了您想要实现的目标,您必须向表单添加一个约束,即子模型的大小,因此在您的提交方法中:

在做任何事之前

$scope.form1.$setValidity('size', model.subModels.length <= 0);

$scope.form1.$setValidity('size',model.subModels.length)“没有输入字段时”是什么意思?您回答了自己的问题。只需检查model.subModels.length的值,然后在提供的示例中,如果.length@aganglada无效,如果
model.subModels
是空数组,则不会生成输入字段,这在我的情况下是无效的。@Vinny我应该在哪里插入此检查,以便使用“角度方式”?我绝对不应该直接修改
form1.$invalid
。我希望它由角度验证机制设置。@在控制器中设置checat。初始化控制器时,可能应该使表单无效(我假设您没有子模型)。然后,当您单击delSubmodel和addSubmodel时,您应该检查子模型的数量,如有必要,请使表单无效/验证表单。感谢您的努力!不幸的是,我认为简单的验证应该在控制器之外进行。我曾想过在隐藏的输入上添加“max”验证,但这也是一种解决方法。
<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>