2017-09-18 1 views
0

J'essaie de personnaliser le validateur pour mon formulaire. Validator a deux paramètres: le premier paramètre est la quantité de chiffres avant le point et le second - est la quantité de chiffres après le point. Et j'utiliser ces paramètres pour faire une expression rationnelle:Angular2: validateur personnalisé avec deux paramètres

new RegExp('^[0-9]{0,' + a + '}([,][0-9]{0,' + b + '})?$') 

https://plnkr.co/edit/v4sWLGRHFijvQH6DfRPa?p=preview

Mais la forme ne fonctionne toujours pas correctement, le message ne montre pas si je ne suis pas regexp lors de la frappe en entrée. Et je n'ai aucune idée de la façon dont je peux utiliser deux paramètres pour valider un formulaire basé sur un modèle en utilisant une directive.

Aide s'il vous plaît

+0

D'un coup d'œil à la plunkr, je ne pense pas que votre directive validateur personnalisé est déclaré dans le module d'application, il ne sera pas se ramassé sur le forme. Vous passez également un seul paramètre - '16, 6 'au validateur, ce qui est correct - il semble que ces valeurs ne sont pas analysées correctement? Vous pouvez également envisager d'utiliser directement l'expression régulière avec le validateur intégré 'pattern' plutôt qu'une option personnalisée. –

Répondre

1

vous avez @Input et non @Input() dans votre-input.component personnalisé, donc il suffit d'ajouter le () et cela fonctionnera bien. il serait:

//Placeholders for the callbacks which are later provided //by the Control Value Accessor private onTouchedCallback:() => void = noop; private onChangeCallback: (_: any) => void = noop; @Input() inputPattern; //get accessor

+0

Il corrige l'erreur, mais le composant ne valide toujours pas – kipris