Edit: ajout d'informations sur ngMessages (1.3.X beta) ci-dessous.
Standard de validation de formulaire messages (1.0.X et au-dessus)
Puisque c'est l'un des meilleurs résultats si vous faites une recherche Google "Angulaire de Validation de Formulaire", actuellement, je veux ajouter une autre réponse à ce pour les personnes à partir de là.
Il y a une méthode dans FormController.$setValidity mais qui ne ressemble pas à une API publique, donc je préfère ne pas l'utiliser.
C'est "public", pas de soucis. L'utiliser. Qu'est ce que c'est. Si ce n'était pas destiné à être utilisé, l'angle de devs auraient privatisée par une fermeture.
Pour faire une validation personnalisée, si vous ne voulez pas utiliser Angulaire de l'INTERFACE utilisateur comme les autres réponses proposées, vous pouvez simplement rouler vos propres validation de la directive.
app.directive('blacklist', function (){
return {
require: 'ngModel',
link: function(scope, elem, attr, ngModel) {
var blacklist = attr.blacklist.split(',');
//For DOM -> model validation
ngModel.$parsers.unshift(function(value) {
var valid = blacklist.indexOf(value) === -1;
ngModel.$setValidity('blacklist', valid);
return valid ? value : undefined;
});
//For model -> DOM validation
ngModel.$formatters.unshift(function(value) {
ngModel.$setValidity('blacklist', blacklist.indexOf(value) === -1);
return value;
});
}
};
});
Et voici quelques exemple d'utilisation:
<form name="myForm" ng-submit="doSomething()">
<input type="text" name="fruitName" ng-model="data.fruitName" blacklist="coconuts,bananas,pears" required/>
<span ng-show="myForm.fruitName.$error.blacklist">
The phrase "{{data.fruitName}}" is blacklisted</span>
<span ng-show="myForm.fruitName.$error.required">required</span>
<button type="submit" ng-disabled="myForm.$invalid">Submit</button>
</form>
Remarque: dans la 1.2.X il est probablement préférable de substituer ng-if
pour ng-show
ci-dessus
Ici est obligatoire plunker lien
Aussi, j'ai écrit quelques entrées de blog sur que ce sujet qui va dans un peu plus en détail:
Angulaire De La Validation Du Formulaire
Validation Personnalisée Directives
Edit: à l'aide de ngMessages en 1.3.X (beta)
Vous pouvez maintenant utiliser le ngMessages module au lieu de ngShow pour afficher vos messages d'erreur. Il sera effectivement travailler avec quoi que ce soit, il n'a pas à être un message d'erreur, mais voici l'essentiel:
- Comprennent
<script src="angular-messages.js"></script>
-
Référence ngMessages
dans votre déclaration de module:
var app = angular.module('myApp', ['ngMessages']);
-
Ajouter le marquage approprié:
<form name="personForm">
<input type="email" name="email" ng-model="person.email" required/>
<div ng-messages="personForm.email.$error">
<div ng-message="required">required</div>
<div ng-message="email">invalid email</div>
</div>
</form>
Dans le balisage ci-dessus, ng-message="personForm.email.$error"
essentiellement spécifie un cadre pour l' ng-message
des enfants de directives. Ensuite, ng-message="required"
et ng-message="email"
spécifiez les propriétés de contexte à regarder. Plus important encore, ils ont aussi spécifier un ordre pour les archiver. Le premier qu'il trouve dans la liste qui est "truthy" qui l'emporte, et il affichera ce message et aucun des autres.
Et un plunker pour la ngMessages exemple