AngularJS requires field validation in ng-repeat

I am trying to run the AngularJS Example to perform inline checks on required fields. However, when it comes to use ng-repeat, this doesn't seem to work for me.

<form name="myForm" novalidate>
  Me: <input required type="text" name="myName" ng-model="name" />
  <span class="error" ng-show="myForm.myName.$error.required">Required!</span>
  <div ng-repeat="friend in friends">
      Friends: <input required type="text" name="myFriend[{{$index}}]" ng-model="friend.name" />
      <span class="error" ng-show="myForm.myFriend[{{$index}}].$error.required">Required</span>
  </div>
</form>

Jsfiddle

Any idea what I'm doing wrong or what can I do to fix this?

+4
source share
1 answer

Unfortunately, you cannot do this. The input element does not like to have a dynamically generated name. You will need to use ng-form as a subform and wrap the repeating element. Here is the fork of your violin: http://jsfiddle.net/p26VQ/

<div ng-controller="MyCtrl">
  <form name="myForm" novalidate>
      Me: <input required type="text" name="myName" ng-model="name" /><span class="error"  ng-show="myForm.myName.$error.required">
  Required!</span>
      <div ng-repeat="friend in friends">
          <ng-form name="subform{{$index}}">
              Friends: <input required type="text" name="myFriend" ng-model="friend.name" /> 
              <span class="error" ng-show="subform{{$index}}.myFriend.$error.required">Required</span>
          </ng-form>
      </div>
  </form>
</div> 
+5
source

Source: https://habr.com/ru/post/1537006/


All Articles