Background: I am currently working on an application with tabs; and I'd like to list the fields / sections that fail validation, to direct the user to look for errors in the right tab.
So I tried to leverage form.$error to do so; yet I don't fully get it working.
If validation errors occur inside a ng-repeat, e.g.:
<div ng-repeat="url in urls" ng-form="form">
<input name="inumber" required ng-model="url" />
<br />
</div>
Empty values result in form.$error containing the following:
{ "required": [
{
"inumber": {}
},
{
"inumber": {}
}
] }
On the other hand, if validation errors occur outside this ng-repeat:
<input ng-model="name" name="iname" required="true" />
The form.$error object contains the following:
{ "required": [ {} ] }
yet, I'd expect the following:
{ "required": [ {'iname': {} } ] }
Any ideas on why the name of the element is missing?
A running plunkr can be found here: http://plnkr.co/x6wQMp
form.iname.$errorand get the correct values. What I ended up doing was usingform.$validto check validity and enable submit button instead.<span>tags for every possible error and useng-show="form.fieldName.$error.required"for example. You could then either inline those with the inputs, or put them near the submit button. It's definitely not ideal though - I wonder if the unpopulated$errorvalue is a bug with angular?