4

Is it possible to use ng-messages with angular 1.3 and show validation summary on the top with error messages for different fields?

<div ng-messages="myForm.$error">
    <div ng-message="required">Need to show required error for field 1.</div>
    <div ng-message="required">Need to show required error for field 2.</div>
</div>

How can i achieve this ? All the examples i have seen so far is showing error messages for one single field, not for all the fields in the form.

Do I need to have multiple ng-messages section for each field?

T J
  • 42,762
  • 13
  • 83
  • 138
user636525
  • 3,180
  • 9
  • 38
  • 51

3 Answers3

6

I wanted to style the whole summary block as one. So i ended up doing this.

<div class="error-summary" ng-show="myForm.$submitted && myForm.$invalid">
    <p ng-show="myForm.field1.$error.required">Field 1 is required.</p>
    <p ng-show="myForm.field2.$error.required">Field 2 is required.</p>
</div>

I was hoping to do something similar to this using ng-messages.

user636525
  • 3,180
  • 9
  • 38
  • 51
3

How about this?

<div ng-messages="myForm.field1.$error">
    <div ng-message="required">Need to show required error for field 1</div>
</div>
<div ng-messages="myForm.field2.$error">
    <div ng-message="required">Need to show required error for field 2</div>
</div>
<div ng-messages="myForm.field3.$error">
    <div ng-message="required">Need to show required error for field 3</div>
</div>
Michael Kang
  • 52,003
  • 16
  • 103
  • 135
1

Yes, you should have multiple ng-messages. Please have a look at the below link.

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

<form name="myForm">
  <label>Enter your name:</label>
  <br>
  <input type="text" name="myName1" ng-model="name1" required />
  <br>
  <input type="text" name="myName2" ng-model="name2" required />

  <div ng-messages="myForm.myName1.$error">
    <div ng-message="required">enter name 1</div>
  </div>
  <div ng-messages="myForm.myName2.$error">
    <div ng-message="required">enter name 2</div>
  </div>
</form>
Rajeshwar
  • 2,290
  • 4
  • 31
  • 41