2017-08-14 4 views
1

In meinem Winkel Material app habe ich ein Feld mit Validierung:Angular Material Eingangsnummer ändern Format

<input type="number" ng-model="myValue" 
     name="myValue" 
     min="0" max="100" 
     ng-pattern="/^[0-9]\d*(\.\d+)?$/" required> 

es gut funktioniert. Aber jetzt muss ich es Benutzer machen, damit .75 eingeben und erhalten statt 0,75

So ist die Frage, wie mein Filter anzuwenden:

if(myValue.substring(0,1) == "."){ 
    myValue = "0" + myValue; 
} 

vor Winkelmaterial ng-pattern und type="number" Validierung

Antwort

1

Sie können einige Richtlinie mit $filter, $formatters schreiben und $parsers:

app.directive('parser', ['$filter', 
    function($filter) { 
     return { 
      restrict:'A', 
      require: 'ngModel', 
      link: function(scope, element, attrs, ctrl) { 

       ctrl.$formatters.unshift(function (a) { 
       return $filter('myFilter')(ctrl.$modelValue) 
      }); 

      ctrl.$parsers.unshift(function (viewValue) { 
      element[0].value = $filter('myFilter')(element[0].value); 
      return element[0].value; 
      }); 
      } 
     }; 
    } 
]); 

app.filter('myFilter', [ 
    function() { 
     return function(input) { 

      if(input && input.substring(0,1) == "."){ 
      input = "0" + input; 
      } 
      return input; 
     }; 
    } 
]); 

DEMO Plunkr


jedoch nicht number Typ verwenden können, weil, wie ich . erinnere mich nicht mehr unterstützt und parst nicht als ganze Zahl

Hoffe, dass es Sie Richtung

+0

Ja, Sie haben Recht, geben Eingang [Nummer] hat Problem mit Nicht-Nummer Eingänge :(Und wenn ich in Texttyp geändert, dann Max, Min - funktioniert nicht – Arti

+0

@Arti können Sie benutzerdefinierte Validierung schreiben –