我正在使用ngMessages来验证表单,这是使用ngRepeat.ngMessages动态生成的表单工作正常但我想显示验证错误消息只有提交按钮被点击。我正在使用ng-if进行检查 单击提交按钮,当前表单字段无效。但我得到角度编译器错误,我认为它与动态构造控件名称有关。
任何人都可以提出以下标记的错误。
<div ng-repeat="item in Data" class="container-fluid">
<ng-form name="fm">
<div class="row">
<div class="col-md-10">
<h2>{{ item.headerName}}</h2>
</div>
</div>
<div class="row" ng-repeat="it in item.items">
<div class="col-md-8">
<div class="form-group">
<label for="''{{ it.name}}''" class="col-xs-4 control-label"> {{ it.name}}</label>
<div class="col-xs-2">
<select name='{{"yOrNo" + $parent.$index + $index}}'
id='{{"yOrNo" + $parent.$index + $index}}'
class="form-control"
data-ng-disabled="false"
ng-model="it.yesorNo"
ng-options="yno.id as yno.value for yno in lookups.yno"
ng-required="true"></select>
<div class="messages" ng-messages="fm.yOrNo{{$parent.$index}}{{$index}}.$error" ng-if="fm.yOrNo{{$parent.$index}}{{$index}}.$error && submitClicked" >
<div class="error-message" ng-message="required">* required.</div>
</div>
</div>
</div>
</div>
</div>
</ng-form>
</div>
答案 0 :(得分:0)
您的ng-form每次迭代都需要一个唯一的名称,因此不是:
<ng-form name="fm">
尝试以下方法:
<ng-form name="fm{{$index}}">
请注意,现在需要相应调整对name=fm{{$index}}
的所有引用,E.G:此:fm.yOrNo{{$parent.$index}}{{$index}}.$error
需要变为:fm{{$parent.$index}}.yOrNo{{$parent.$index}}{{$index}}.$error