Não registre valores inválidos com ng-model

Eu realmente gosto de como o atributo ng-model se liga diretamente ao meu modelo e os usuários recebem feedback instantâneo sobre suas mudanças. Para o meu caso de uso, isso é perfeito. No entanto, não quero que valores inválidos sejam colocados no modelo em que eles possam alterar os cálculos. De alguma forma, quero que o modelo seja atualizado apenas se o valor no controle de formulário for válido. Para valores inválidos, é bom que o valor de controle seja alterado enquanto o valor do modelo permanece fixo.

Se eu mudar a fonte da implementação $ setViewValue do NgModelController:

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

Para isso:

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

Parece fazer exatamente o que eu quero, mas não sei como fazer isso de maneira apropriada. Qual é o caminho certo para mudar esse comportamento? Ou minhas tentativas estão fadadas ao fracasso por algum motivo?

Atualização: exemplo adicionado.

Por exemplo, olhe parahttp://jsfiddle.net/FJvgK/1/ HTML:

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

E o JS:

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

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

O número é exibido corretamente para valores entre 10 e 20, mas eu quero que, se você digitar "8" de repente na caixa, ou excluir o segundo dígito, deixando "1" o último número válido ainda mostrado acima. Ou seja, o modelo sempre tem um valor válido, mesmo que o controle não tenha.

questionAnswers(3)

yourAnswerToTheQuestion