Pouvez-vous faire quelque chose comme ça en angulaire?
Il n'est pas tout à fait possible de le faire, comme cela ne permet pas d'analyser les tags ou quelque chose
{{ 10000 | currency:"<span>$</span>" }}
Http://plnkr.co/edit/WluYoe2Ltmhmhvr8BBWX?p=preview
Encore moins d'un nombre décimal séparé ..
Le résultat idéal serait
1 000 000<span class="dec">,00</span><span class="cur">€</span>
Ce n'est pas vraiment possible avec les paramètres de filtrage est-ce …?
Je pourrais essayer de modifier le filtre monétaire angulaire et la fonction formatNumber
, mais il le prendrait toujours comme un texte plutôt que comme un élément span.
// edit, vous pouvez effectivement faire ceci http://plnkr.co/edit/dcEhHi8sp43564ZvC4D1?p=preview
<p ng-bind-html-unsafe="10000 | currency:'<span>$</span>'"></p>
Toujours clueless sur les décimales cependant
Vous pouvez créer un filtre personnalisé
app.filter('euro', function () { return function (text) { text = text.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1 "); var t = text + '<span class="desc">,00</span><span class="cur">€</span>'; return t; }; }); <span ng-bind-html-unsafe="1000000 | euro"></span>
Le résultat sera
1 000 000,00€
Démonstration de travail
(Le regex est publié par @Paul Creasey dans sa réponse https://stackoverflow.com/a/1990554/304319 )
C'est réellement possible de le faire
<p ng-bind-html-unsafe="10000 | currency:'<span>$</span>'"></p>
Ou enveloppez-le autour du filtre monétaire natif comme celui-ci
app.filter('currencys', ['$filter', '$locale', function($filter, $locale) { return function (num) { var sym = $locale.NUMBER_FORMATS.CURRENCY_SYM; return $filter('currency')(num, '<span>'+ sym +'</span>'); }; } ]);
Et utilisez-le comme ça
<span ng-bind-html-unsafe="10000 | currencys"></span>
Certaines régions ont le signe de la devise préfixé, certains postfixés, par exemple "100 euros" seraient rendus "100 €" ou "100 €". Quoi alors?
Si cela ne vous dérange pas de faire des analyses, lisez ceci:
Le service $locale
contient les symboles requis pour le formatage de devise:
$locale.NUMBER_FORMATS.CURRENCY_SYM $locale.NUMBER_FORMATS.DECIMAL_SEP
(Et il y a des informations plus détaillées dans $locale.NUMBER_FORMATS.PATTERNS[]
– la valeur à la position [1]
correspond aux devises)
Vous pouvez créer une directive qui utilise le filtre de currency
pour obtenir la chaîne formatée initiale, par exemple "1 000 000,50 €"
puis recherchez les $locale.NUMBER_FORMATS.CURRENCY_SYM
et remplacez-le par <span>{{ $locale.NUMBER_FORMATS.CURRENCY_SYM }}</span>
, faites quelque chose de similaire pour le séparateur décimal, puis définissez innerHTML
d'un élément.