The key difference between them is that ng-dirty indicates that the input field has been edited by the user, whereas ng-pristine indicates that the field has not been modified by the user. Let's try if we can clear everything up with the help of a little example.