2017-09-22 2 views
0

Je face un problème dans Angular2 & RegExpComment ajouter de la valeur dans Array <string | RegExp> dans Angular2

Ce forfait Utilisé dans angulaire 2 https://github.com/text-mask/text-mask/

Documentation https://github.com/text-mask/text-mask/tree/master/angular2#readme

Mon problème, je peux utiliser 5-6 Type Téléphone Format utilisé

Comme

  • (XXX) XXX XXXX

  • (XXX) XXX-XXXX

  • XXX-XXX-XXXX

  • XXX XXX XXXX
  • XXXXXXXXXX
  • XXXXX XXXXX

Ci-dessus Package utilisé Format de tableau

Je Chaîne ce format

'(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/ 

Comment puis-je ajouter en Array Format

Je peux essayer ce code

code-1:

var phoneFormat:Array<string | RegExp>; 
var format="'(','/[1-9]/','/\d/','/\d/',')',' ','/\d/','/\d/','/\d/',' ','/\d/','/\d/','/\d/','/\d/'"; 

     var ArrayObj=format.split(','); 

     for (var i = 0; i < ArrayObj.length; i++) { 
      phoneFormat.push(ArrayObj[i]); 
     } 

erreur donné

Error: Uncaught (in promise): TypeError: Cannot read property 'push' of undefined 
TypeError: Cannot read property 'push' of undefined 

code-2

var format=['(','/[1-9]/','/\d/','/\d/',')',' ','/\d/','/\d/','/\d/',' ','/\d/','/\d/','/\d/','/\d/']; 
     phoneFormat=format; 

code-2 Pas d'erreur Mais le masquage ne fonctionne pas

+1

'var phoneFormat: Array ; 'ceci est juste une définition de type. Vous n'avez pas initialisé la variable. Essayez 'var phoneFormat: Array = []; ' – Rajesh

+0

cela aussi essayer pas de succès –

+0

Permet de nettoyer les sections de commentaires et de supprimer tout ce qui est non constructif – Rajesh

Répondre

0

Comme commenté, vous obtenez l'erreur suivante:

TypeError: Cannot read property 'push' of undefined

parce que, vous n'avez pas initialisé le tableau.

var phoneFormat:Array<string | RegExp>; est juste une définition de type. Vous devrez faire var phoneFormat:Array<string | RegExp> = [];


maintenant

"'(','/[1-9]/','/\d/','/\d/',')',' ','/\d/','/\d/','/\d/',' ','/\d/','/\d/','/\d/','/\d/'" 

est une chaîne de chaîne formatée. Donc, quand vous le divisez, vous obtiendrez seulement une chaîne stringifiée comme "'('".

Vous devrez l'analyser.exemple suivant vous aidera:

var phoneFormat: Array <string | RegExp> = []; 
 
var format = "'(','/[1-9]/','/\d/','/\d/',')',' ','/\d/','/\d/','/\d/',' ','/\d/','/\d/','/\d/','/\d/'"; 
 

 
format.split(',').forEach(function(value){ 
 
    if(value.startsWith('\'/')) { 
 
    phoneFormat.push(new RegExp(value.substring(2, value.length-2))); 
 
    } 
 
    else { 
 
    phoneFormat.push(value.substring(1, value.length-1)); 
 
    } 
 
}); 
 

 
console.log(phoneFormat)

+0

ok je peux essayer attendre –

+0

je peux réussir mais je ne peux taper que" d "charcter (lettre) aucun autre caractère type :( –

+0

je veux seulement [0-9] nombre d'ASCII Charcter Autoriser comment je peux faire cela pouvez-vous me suggérer ?? –