ngModel's validation state properties don't work nicely when you have repeating inputs, as later input validation states in the repeat override ones earlier in the repeating block. The trick is to use a nested form (ng-form) to treat each repeating element as its own form. That works with the root form as well as allows you to put error messages in correctly.
To fix the error messages on the repeating element:
- Add a ng-form="flavors" to the li element.
- Change the ng-show to flavors.flavor.$invalid.
A Pen by Jeremy Lund on CodePen.