You need something like $dirty (changed from the default) or $touched (blurred at least once, maybe what you want based on your model options).
Example
form name="form"> <input type="email" ng-model-options="{ updateOn: blur }" required /> <input type="password" ng-model-options="{ updateOn: blur }" required /> <div ng-messages="form.password.$error" ng-if="form.password.$touched"> <div ng-message="required">Password required</div> </div> </form>
I used ng-messages here because it is neat, but you do not need to use it, you can just add a condition to your ng-show / ng-if .
References
source share