The code below seems to work pretty well for doing basic required form validation.
The form displays a red Name is required message when the field is dirty
One way you could do it is to abstract your validation expression to scope methods:
PLUNKER
Name is required
Great!
function Ctrl($scope) {
$scope.isInvalid = function(field){
return $scope.myForm[field].$invalid && $scope.myForm[field].$dirty;
};
$scope.isValid = function(field){
return $scope.myForm[field].$valid && $scope.myForm[field].$dirty;
};
}