Retrait d'AngularJS monnaie filtre décimal/cents
Est-il un moyen de supprimer la virgule/cents à partir de la sortie d'un bureau de filtre? Je suis en train de faire quelque chose comme ceci:
<div>{{Price | currency}}</div>
Sorties:
De 1 000$.00
Au lieu de cela, je voudrais:
De 1 000 $
Qui peut être fait en utilisant la monnaie du filtre? Je sais que je peux le faire précéder d'un signe de dollar sur un certain nombre, et je pourrais écrire mon propre filtre, mais j'espérais une méthode simple qui existe avec la monnaie actuelle filtre.
Merci.
- Malheureusement pas. La devise de filtre utilise un format codé en dur numéro d'appel à l'aide de 2 décimales. La seule solution pour l'instant est d'ajouter un filtre personnalisé
Vous devez vous connecter pour publier un commentaire.
Mise à jour: à partir de la version 1.3.0 - currencyFilter: ajouter fractionSize comme paramètre optionnel, voir s'engager
et mis à jour plunker
Noter que c'est le deuxième paramètre de sorte que vous besoin de passer pas défini pour utiliser les paramètres régionaux en cours de devise symbole
Mise à jour: Prendre note que cela ne fonctionne que pour les symboles des devises qui sont affichés avant le numéro.
À partir de la version 1.2.9 c'est toujours fixée à 2 décimales.
Ici est une version modifiée qui utilise une copie de l'angulaire de l'formatNumber pour activer 0 fractionSize de la monnaie.
Normalement, ce devrait être configurable soit dans les paramètres régionaux de définition ou de la currencyFilter appel, mais pour l'instant(1.0.4) c'est codé en dur à 2 décimales.
Filtre personnalisé:
Modèle:
Exemple:
Mise à jour: correction d'un bug lors de la manipulation de valeurs négatives
La question semble être assez vieux et les réponses données sont gentils. Cependant, il y a une autre solution alternative qui peut aussi aider (que j'utilise dans mes projets).
Cela fonctionne très bien avec des symboles de devise préfixant ainsi que suffixant le nombre de valeurs positives et négatives.
Filtre personnalisé:
Modèle:
Exemples pour les différents paramètres régionaux:
Veuillez jeter un oeil à la démo en live pour dollars US et Couronne danoise.
Mise à jour
Veuillez noter que cette solution est bonne pour AngularJS 1.2 et versions antérieures de la bibliothèque. Comme de AngularJS 1.3 vous pouvez utiliser monnaie formateur avec le troisième paramètre spécifiant fraction de la taille "Nombre de décimales pour arrondir le montant à".
Noter que pour utiliser format monétaire par défaut venant de AngularJS localisation, vous devez utiliser le symbole de la monnaie (deuxième paramètre) mis à
undefined
(null
ou vide ne fonctionnera PAS). Exemple dans les démos pour dollars US et Couronne danoise.$filter
et que "les corrections" de la fuite des décimales.'.'
, ou tout autre "spécial" regexp personnage, il aura besoin d'être échappés dans l'expression de chaîne de caractères.new RegExp('\\' + formats.DECIMAL_SEP + '\\d{2}')
, la première\` characters are converted to the escape character. So in case of
. " ou même+
en tant que séparateurs, vous obtenez régulièrement des expressions comme:/\.\d{2}/
ou/\+\d{2}/
respectivement."d"
pour une raison quelconque, ce sera la rupture.d
le mécanisme ne fonctionnera pas (d
deviendrait\d
et correspondent à des chiffres, pas de lettred
). Cependant, la proposition a été faite avec une hypothèse qui Angulaireformat.DECIMAL_SEP
est limitée à quelques personnages (par exemple,,
,.
) seulement au sein de tous Angulaire cultures. Mais si vous utilisez une culture personnalisée, qui, par exemple, utiliséd
comme unDECIMAL_SEP
alors que le mécanisme ne fonctionne pas comme prévu. MerciUne autre chose qui est à considérer est si vous savez que vous avez un endroit ou un type de monnaie, vous pouvez placer le symbole de la devise avant le numéro, puis utilisez le filtre de numéro comme (pour la monnaie des états-unis).
Plus d'une solution rapide si vous ne voulez pas pour les jeter dans un nouveau filtre et n'ont qu'une seule devise.
Il est tard, mais peut-être cela peut aider quelqu'un
Donc, nous allons voir quelques exemples avec sortie
Voir le démo
C'est une autre solution similaire, mais il supprime .00 décimal, mais laisse les autres décimale.
$10.00 $à 10 $
$10.20 à $10.20
Solution angulaire version < 1.3,
si vous utilisez i18n la façon la plus simple est:
Cette façon, vous avez le nombre mis en forme avec un bon séparateurs et le symbole de la monnaie basée sur des paramètres régionaux.
Une autre solution, celui-ci supprime les zéros à droite et trouve le bon symbole de la devise de la plupart des monnaies:
{{10.00|argent:USD}} à $10
{{10.00|argent:EUR}} à 10 euros
Pour AngularJS 1.2
Vous pouvez simplement combiner
number
etcurrency
filtresEt ici si vous voulez arrondir au plus proche de $1000: Démonstration En Direct:
Exactement ce dont j'avais besoin!
J'ai ajouté une condition à la juste remplacer Angulaire de la monnaie filtre complètement et il suffit d'utiliser une version modifiée du filtre vu ci-dessus par @Tom. Je suis sûr qu'il ya de meilleures façons de le faire, mais il semble bien fonctionner pour moi donc loin.
J'ai un peu modifié le filtre posté par @Liviu T. accepter les monnaies, symbole de après la le nombre un certain nombre de décimales:
Par exemple:
Sorties:
Démo
Si vous souhaitez utiliser angulaires-i18n (
bower install angular-i18n
), vous pouvez utiliser un décorateur pour modifier les valeurs par défaut dans les fichiers de localisation, comme suit:Noter que cela s'applique à toutes les devises filtre utilise dans votre code.
Angulaire 4+