8
votes

Angulaire, Ng-Messages n'apparaît pas dans la boîte de dialogue de conception de matériau angulaire (boîte de dialogue MD)

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);
        }
    }
}


2 commentaires

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


6 Réponses :


3
votes

J'ai pu faire ce travail.

  1. Ajouter des messages angulaires au Bower et Index
  2. Ajoutez le module NgMessages à votre application
  3. sur un conteneur d'entrée MD a fait ceci xxx

    et pour une directive personnalisée, j'ai fait ce xxx


4 commentaires

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



0
votes

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.

espoir que cela vous aide aussi.

abhimanyu


0 commentaires

4
votes

essayer avec xxx

qui corrige mon numéro similaire


1 commentaires

Il semble que ceci est une solution de contournement lorsqu'il n'utilise pas MD-INPUT-CONTENEUR , 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.



2
votes

est-il possible d'avoir deux formulaire Tags?
Si vous avez copié les démos du site angulaire, vous pouvez avoir formulaire intérieur . Cela peut causer ce problème exacte.


0 commentaires

6
votes

Il y a deux corrections possibles détaillées ici: https://github.com/angular/material/ Problèmes / 8037

  1. Assurez-vous que la directive NG-APP est sur la balise de votre corps de votre page.

  2. Supprimer la ligne Parent: angular.Element (document.body) à partir de vos options $ MDDialog.show ().


1 commentaires

J'ai commenté le parent: Angular.Element (document.bon) sur mon script troublé et mon boom! Ça a marché! Merci Casey!



0
votes

Je pense que vous devriez attraper erreur ng-modèle form.cc_number. $ erreur , même code ici: xxx


0 commentaires