wir individuellen Validierung-Methoden für benutzerdefinierte Formelemente über eine extra-Richtlinien registrieren:Eingang wird nie ng-invalid-Klasse von Angular
<ng-form name="validatorTestForm">
<our-input-directive name="validatorTest"
ng-model="ourModel"/>
</our-input-directive>
<our-validator-directive name="validatorTest"
form="validatorTestForm"
ng-model="ourModel">
</our-validator-directive>
</ng-form>
Es erhält alle Informationen über Attribute wissen, welchen Eingang in welcher Form zu validieren ist; wir verbinden es dann wie das durch die Richtlinie Einleitung: (abgespeckte Version)
registerValidator(ourModel.form, 'validatorTest');
function registerValidator(form, inputName) {
var validationModel = form[inputName];
validationModel.$validators.testValidator = function (modelValue) {
// validate to true when there are more then two characters entered
return modelValue.length > 2;
};
}
Die unsere eintritt Richtlinie ganz einfach:
angular.directive('ourInputDirective', function() {
return {
restrict: 'E',
template: '<input type="text" ng-model="model">',
scope: {
model: '=?ngModel'
}
}
});
So laufen wir es, Angular hat seine Magie und fügt dem form-element und dem input-element tons css-classes hinzu und wenn wir etw. In die Eingabe wird die Validierung ordnungsgemäß ausgelöst. Das Formularelement erhält eine CSS-Klasse 'ng-gültig', wenn es gültig ist und 'ng-ungültig', wenn es nicht gültig ist.
Die Eingabe howewer, hat nur die Klasse 'ng-valid' und wird niemals ungültig!
Also warum ist das und wie kann ich es ändern, um die Modell-Änderungen an den Eingängen css-Klassen widerzuspiegeln?
Wir möchten die 'ng-invalid' Klasse verwenden, um den Stil der Eingabe zu ändern.
Ich gehe davon aus, die Validierung ist nur ein Beispiel, wenn es nicht dann ist, können Sie nur eine normale Texteingabe verwenden und das Attribut minlength verwenden. – George
Ja, wir möchten über diese Direktive alle Arten von benutzerdefinierten Validierungsmethoden hinzufügen können. – MaxBoehme