I know Angular pretty well, use it everyday, but apparently, I'm having one of those days..
I'm probably missing something hideously obvious, but why aren't I seeing testForm.testField.$invalid & testForm.testField.$dirty etc???
var myApp = angular.module('myApp',[]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
<form name="testForm">
<input type="text" name="testField" ng-model="testField" required="required" />
{{testForm | json}}
{{testField}}
</form>
</div>