Я понял, что $setPristine должен это делать, но это не мой проект. Это моя форма:
form(name="new_project", ng-submit="create_project()")
div.create_wrapper
input#project_name(required, ng-model="project.name", type="text")
select#project_language(required, ng-init="project.language='PHP'", ng-model="project.language", ng-options="language for language in languages")
input.button.tiny.radius(type="submit", value="Create")
И js:
$scope.create_project = () ->
project = new projectFactory this.project
project.$save project, (form_data) ->
$scope.projects.push form_data
$scope.new_project.$setPristine()
Ошибок нет, а в исходном состоянии установлено значение true, но значение входов остается.