No registrar valores inválidos con ng-model

Realmente me gusta cómo el atributo ng-model se enlaza directamente con mi modelo y los usuarios obtienen comentarios instantáneos sobre sus cambios. Para mi caso de uso que es perfecto. Sin embargo, no quiero que se coloquen valores no válidos en el modelo, donde pueden arrojar una llave en los cálculos. De alguna manera quiero que el modelo solo se actualice si el valor en el control de formulario es válido. Para valores no válidos, está bien que el valor de control cambie mientras que el valor del modelo se mantiene fijo.

Si cambio la fuente de la implementación $ setViewValue de NgModelController de angular (1.2rc):

this.$setViewValue = function(value) {
...
  if (this.$modelValue !== value) {
    this.$modelValue = value;
    ...
  }
};

A esto:

this.$setViewValue = function(value) {
...
  if (this.$modelValue !== value && this.$valid) {
    this.$modelValue = value;
    ...
  }
};

Parece hacer exactamente lo que quiero, sin embargo, no sé cómo hacerlo de una manera adecuada. ¿Cuál es la forma correcta de cambiar este comportamiento? ¿O están mis intentos condenados al fracaso por alguna razón?

Actualización: Ejemplo agregado.

Por ejemplo, mirahttp://jsfiddle.net/FJvgK/1/ HTML:

<div ng-controller="MyCtrl">
    {{validNumber}}
    <form>
        <input 
            type="number"
            ng-model="validNumber"
            required
            min="10"
            max="20" 
        />
    </form>
</div>

Y el JS:

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    $scope.validNumber = 15;
}

El número se muestra correctamente para valores entre 10 y 20, pero lo quiero para que, de repente, escriba "8" en el cuadro, o elimine el segundo dígito, dejando "1" el último número válido que aún se muestra arriba. Es decir, el modelo siempre tiene un valor válido, incluso si el control no lo tiene.

Respuestas a la pregunta(3)

Su respuesta a la pregunta