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:は this:fm.yOrNo{{$parent.$index}}{{$index}}.$errorになる必要があります。fm{{$parent.$index}}.yOrNo{{$parent.$index}}{{$index}}.$error

于 2015-10-28T14:25:17.497 に答える