Angular.js - ng-change no se dispara cuando ng-pattern no es válido $

Estoy usando ng-pattern para validar algunos campos de formulario, y estoy usando ng-change para ver y procesar los cambios, sin embargo, ng-change (o $ scope. $ Watch) solo se activará cuando el elemento de formulario esté en el $ estado valido! Soy nuevo en angular, así que no sé cómo resolver este problema, aunque sospecho que una nueva directiva es el camino a seguir.

¿Cómo puedo hacer que ng-change se active tanto en estados de elementos de formulario $ no válidos como $ válidos, con el patrón ng aún configurando los estados de elementos de formulario como antes?

HTML:

<div ng-app="test">
  <div ng-controller="controller">
    <form name="form">
        <input type="text" name="textbox" ng-pattern="/^[0-9]+$/" ng-change="change()" ng-model="inputtext"> Changes: {{ changes }}
    </form>

    <br>
    Type in any amount of numbers, and changes should increment.

    <br><br>
    Now enter anything that isn't a number, and changes will stop incrementing. When the form is in the $invalid state, ng-change doesn't fire.

    <br><br>
    Now remove all characters that aren't numbers. It will increment like normal again. When the form is in the $valid state, ng-change will fire.

    <br><br>
    I would like ng-change to fire even when the the form is $invalid.

    <br><br>
        form.$valid: <font color="red">{{ form.$valid }}</font>

  </div>
</div>

Javascript:

angular.module('test', []).controller('controller', function ($scope) {
    $scope.changes = 0;
    $scope.change = function () {
        $scope.changes += 1;
    };
});

He creado un JS Fiddle que funciona y muestra el problema que tengo.

http://jsfiddle.net/JAN3x/1/

Por cierto, este problema angular también parece ser relevante:https://github.com/angular/angular.js/issues/1296

Respuestas a la pregunta(4)

Su respuesta a la pregunta