Hi Naomi,,
Jut an idea, if the control gets RED color right away then the a class like has-error applies, and why the error class applies at the beginning? may be because the validation doesn't consider $dirty flag.
why it gets applied right away? Umm I guess more than the code part which you shared should be reviewed.
You know, maybe the post in Paul Yoder's blog can help:
http://blog.yodersolutions.com/bootstrap-form-validation-done-right-in-angularjs/ Hope you have happy bug fixing shortly.