Je travaille sur un formulaire pour ajouter une carte de crédit en angularjs, avec un matériau angulaire ( https: //material.angularjs.org/latest/#/ ).
Pour tous mes autres formulaires, j'ai utilisé NG-Messages ( https://docs.angularjs.org/api/ngmessages/directive/ngMessages ) Pour afficher des erreurs de validation, et cela a fonctionné bien. P>
Lorsque j'embroude la forme dans une boîte de dialogue MD, mes messages NG ne s'affichent pas, l'entrée est devenue invalide, mais aucune erreur affichée. J'ai le problème avec la directive de validation de base et la directive de validation personnalisée. P>
My Modèle de dialogue: P>
angular .module('app.core') .directive("cardNumber", cardNumber); /* @ngInject */ function cardNumber () { var directive = { link: link, restrict: 'A', require : "ngModel" }; return directive; function link(scope, element, attrs, ngModel) { ngModel.$validators.cardNumber = cardNumber; scope.$watch("cardNumber", function(){ ngModel.$validate(); }); // Validate visa, mastercard, amex, concate new regex to validate more card var reg = new RegExp(/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13})$/); function cardNumber(modelValue){ if(!modelValue){ return true; } modelValue = modelValue .replace(/-/g, "") .replace(/\s/g, "") .replace(/,/g, ""); return reg.test(modelValue); } } }
6 Réponses :
J'ai pu faire ce travail.
et pour une directive personnalisée, j'ai fait ce p>
Non rien n'apparaît dans la console de dev ou dans le navigateur
Salut @jbduzan Avez-vous essayé de votre directive pour utiliser le modèle. $ SetValidité () à la validation de configuration sur le modèle? BTW, j'ai vu que vous avez mis une validation "requise", cela apparaît-il? ou les deux messages ne montrent pas?
Salut, non je n'ai pas le modèle d'utilisateur. $ Stevalidité (), mais je ne pense pas que cela fonctionnerait, la directive requise ne se présente pas non plus, et les autres contributions ont toutes une directive "classique" et elles ne font pas montrer aussi
Peut-être pouvez-vous essayer avec
Les gars, je faisais face au même problème. Le problème dans mon cas était que je n'avais pas supprimé d'une balise enfermante de l'exemple de code de dialogue MD. Qui était probablement interférant avec les messages. p>
espoir que cela vous aide aussi. P>
abhimanyu p>
essayer avec qui corrige mon numéro similaire p> p> p>
Il semble que ceci est une solution de contournement lorsqu'il n'utilise pas MD-INPUT-CONTENEUR CODE>, qui n'est pas un scénario OP. Je crois que ce n'est pas une réponse appropriée à cette question, cela conviendrait mieux en tant que commentaire, car il s'agit d'un tir dans le noir (compte tenu de la situation de l'OP), même si cela pourrait fonctionner pour d'autres scénarios.
est-il possible d'avoir deux formulaire code> Tags?
Si vous avez copié les démos du site angulaire, vous pouvez avoir formulaire code> intérieur
code>. Cela peut causer ce problème exacte. P>
Il y a deux corrections possibles détaillées ici: https://github.com/angular/material/ Problèmes / 8037 P>
Assurez-vous que la directive NG-APP est sur la balise de votre corps de votre page. P> li>
Supprimer la ligne Parent: angular.Element (document.body) code> à partir de vos options $ MDDialog.show (). p> li>
ol>
J'ai commenté le parent: Angular.Element (document.bon) sur mon script troublé et mon boom! Ça a marché! Merci Casey!
Je pense que vous devriez attraper erreur ng-modèle form.cc_number. $ erreur code>, même code ici:
Une mise à jour pour ceci? Comment vous avez corrigé ce problème?
NOP ne l'a jamais réparé, le projet est parti depuis longtemps