0

我正在使用 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>
4

1 回答 1

0

您的 ng-form 每次迭代都需要一个唯一的名称,所以不要: <ng-form name="fm">尝试类似: <ng-form name="fm{{$index}}">

请注意,所有对它的引用name=fm{{$index}}现在都需要相应调整,EG: this:fm.yOrNo{{$parent.$index}}{{$index}}.$error将需要变为 this:fm{{$parent.$index}}.yOrNo{{$parent.$index}}{{$index}}.$error

于 2015-10-28T14:25:17.497 回答