0

私はこのtoppicで説明したのと同じ問題を抱えている: 私はNGの内側に私のカスタムディレクティブを使用していますので、解決策は、私のために働いていないこと生憎Angular JS ng-message inside directive角度NG-のメッセージ

-繰り返す。したがって、すべての入力に対してエラー状態が満たされた場合にのみメッセージが機能します。

http://plnkr.co/edit/lJT48bmYvR9DGFliIYDH?p=preview

私はNG-のメッセージ条件を作成するための多くの方法を試してみましたが、何も正常に働いていません。あなたはplunker上で見つけることができるそれらの二つ:

ng-messages="form.doubleInputLeft.$error" 
ng-messages="form['doubleInputRight' + $index].$error" 

は、私を助けてくださいng-repeat内で動作するようにinput要素については よろしく

+1

'NG-'とディレクティブの名前の接頭辞ないでください。この接頭辞はコアディレクティブ用に予約されています。詳細については、[AngularJS Wiki - ベストプラクティス](https://github.com/angular/angular.js/wiki/Best-Practices)を参照してください。 – georgeawg

答えて

1

、インデックスはname属性の一部として含まれている必要があります。

<!-- index must be included in the name attribute -- 
    <input name="doubleInputLeft" class="form-control ngMessageSample" type="{{inputType}}" ng-model="modelLeft" ng-minlength="2" ng-maxlength="20" required> 
    --> 
    <input name="doubleInputLeft{{index}}" class="form-control ngMessageSample" type="{{inputType}}" ng-model="modelLeft" ng-minlength="2" ng-maxlength="20" required> 
    <div ng-messages="form['doubleInputLeft'+index].$error" class="ngMessagesClass" ng-messages-multiple> 
     <div ng-message="minlength" class="ngMessageClass"> {{leftInputHeading}} must have at least 2 characters.</div> 
     <div ng-message="maxlength" class="ngMessageClass"> {{leftInputHeading}} must have at most 20 characters.</div> 
    </div> 

それ以外の場合は、繰り返される要素の名前が重複します。

DEMO on PLNKR

+0

ありがとうございました。それが私が考えていた最後のことでした。私は、ディレクティブ名も変更します。 Regadsともう一度ありがとう! – www