Подтвердить что ты не робот

Angular Валюта Js, символ евро после

Как перенести символ евро с начала значения на него после?

Пример:

{{product.price | currency : "€"}} произведет € 12.00

но я хотел бы 12.00 €

4b9b3361

Ответ 1

Вам не нужно взломать фильтр валют!

AngularJS имеет большую поддержку для i18n/l10n. Фильтр валюты использует символ валюты по умолчанию из службы локали и позиционирует его на основе настроек локали.

Итак, все о поддержке и настройке правильной локали.

<script src="i18n/angular-locale_de-de.js"></script>

Если вы используете npm или bower, все локали доступны через пакет angular-i18n .

<span>{{ product.price | currency }}</span>

теперь выдаст следующий результат:

65,95 €

Поддержка нескольких локализаций

Если вы хотите поддерживать несколько локализаций, будьте осторожны с символом валюты, поскольку он изменяется на валюту по умолчанию используемого языка. Но 65,95 € отличаются от $65,95. Предоставьте символ валюты в качестве безопасного параметра:

<span>{{ product.price | currency:'€' }}</span>

В de-de вывод все равно будет 65,95 €, но если это место, например. en-us это будет €65.95 (что, несмотря на некоторые другие высказывания правильный формат для отображения цен на евро на английском языке).

Чтобы узнать больше о angular и i18n/l10n, обратитесь к разработчику.

Ответ 2

Вы не можете использовать фильтр валют. Вы можете написать свой собственный или просто использовать цифровой фильтр.

{{(produce.price | number:2) + "€"}}

Ответ 3

Предлагаемые решения являются грязными.

сначала фильтр позволяет изменить символ, добавив его как параметр:

{{product.price | currency : "€"}}

но правильный способ - локализовать ваше приложение, как это было предложено компанией @Andreas если вы локализируете свое приложение, например, с помощью итальянской настройки локали (it-it) внутри вашего приложения, вам нужно только вызвать фильтр для получения знака €.

{{product.price | currency }}

Настройки итальянского языка устанавливают знак Euro перед значением валюты. Вы можете изменить значение своего языка или гораздо лучше переопределить их, как предлагается в следующем связанном ответе:

Почему валютный фильтр AngularJS форматирует отрицательные числа с круглыми скобками?

вы можете переопределить настройку локали, поместите свой валютный символ (\ u00A4) в качестве префикса или суффикса для положительного значения и отрицательного.

app.config(['$provide', function($provide) {
    $provide.decorator('$locale', ['$delegate', function($delegate) {
      if($delegate.id == 'it-it') {
            $delegate.NUMBER_FORMATS.PATTERNS[1].negPre = '\u00A4\u00a0-';
            $delegate.NUMBER_FORMATS.PATTERNS[1].negSuf = '';
            $delegate.NUMBER_FORMATS.PATTERNS[1].posPre = '\u00A4\u00a0';
            $delegate.NUMBER_FORMATS.PATTERNS[1].posSuf = '';
      }
      return $delegate;
    }]);
  }]);

поэтому после этой команды фильтр:

{{product.price | currency}} 

будет выводить следующий результат

€ 12

Ответ 4

используйте этот трюк.

<div>{{product.price | currency : '' }} €</div>

Ответ 5

Это довольно старый вопрос, это разные в наши дни. Возможно, это было тогда и тогда.

Так что, если кто-то найдет это.

Но вам нужно включить правильный языковой стандарт, чтобы получить правильное форматирование валюты в фильтре валюты.

Проверьте документацию angular, например, форматирование валюты голландского языка составляет € 5,00. Английский составляет 5,00 евро, а американец - 5,00 евро.

Ответ 6

Используя locale (как объясняется в ответе в этом потоке -  в Angular валюта Js, символ евро после) выглядит как правильный" → правильный способ сделать это, но, похоже, не предлагает гибкость, чтобы поместить символ валюты или имя, где вы хотите, относительно значения, на которое вы ссылаетесь. Если вам нужно иметь свой символ валюты после вашего значения, вы можете иметь отдельное поле product.currency и интерполировать его после (или до) вашего значения цены.

Итак, если у вас есть product.price = 40 и product.currency = '€', вы можете отобразить его как 40 € с {{product.price}} {{product.currency}}. Или € 40 путем изменения полей: {{product.currency}} {{product.price}}.

Возможно, вы захотите отформатировать значения product.price через десятичный канал, если вы это сделали (https://angular.io/api/common/DecimalPipe). - Таким образом, "40,00 €" будет: {{product.amount | number:'2.2-2'}} {{product.currency}}.

fyi - в этом случае у меня, вероятно, будет отдельное поле product.currency и product.currencySymbol (например, "USD" и "$" соответственно), но затем вы получаете больше функциональности locale как указано в другом ответе, указанном выше. Но если вам нужно поместить название или символ валюты в другое место относительно значения, чем Angular позволит вам делать через свои родные каналы и хотеть использовать валюту, специфичную для записи или установленной вами работая без жесткого кодирования своего символа или имени на странице (например, если у вас есть несколько валют, которые вы показываете), это один из способов сделать это динамически.

Ответ 7

Angularjs имеет большую поддержку для интернационализации и локализации. Применение интернационализации и локализации зависит от объема вашей заявки. Например, если ваше приложение поддерживает только евро, вам нужна только локализация для евро и не требуется вся валюта и ее форматирование.

В такой ситуации (Предположив, что ваша ситуация похожа на приведенную выше), вы можете создать конфигурацию приложения и установить локаль в качестве необходимой вам локализации с помощью некоторых декораторов. Функция декоратора перехватывает создание службы, позволяя ей переопределять или изменять поведение службы.

angular
  .module('app', [])
  .config(['$provide', function($provide) {
    $provide.decorator('$locale', ['$delegate', function($delegate) {
      $delegate.NUMBER_FORMATS = {
        DECIMAL_SEP: '.',
        GROUP_SEP: ',',
        PATTERNS: [{ // Decimal Pattern
          minInt: 1,
          minFrac: 0,
          maxFrac: 3,
          posPre: '',
          posSuf: '',
          negPre: '-',
          negSuf: '',
          gSize: 3,
          lgSize: 3
        }, { //Currency Pattern
          minInt: 1,
          minFrac: 0,
          maxFrac: 1,
          posPre: '\u00A4',
          posSuf: '',
          negPre: '(\u00A4',
          negSuf: ')',
          gSize: 3,
          lgSize: 3
        }],
        CURRENCY_SYM: '€'
      }
      return $delegate;
    }]);
  }])
  .controller('appController', ['$scope', function($scope) {
    $scope.price = 20.55;
  }])
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
<div ng-app="app">
  <div ng-controller="appController">
    Price : {{price | currency}}
  </div>
</div>

Ответ 8

Вы можете создать фильтр:

app.filter('euroFormat', function () {
    return function (input) {
        return input+' \u20AC';
    };
});

и примените его к вашему html-коду с помощью:

<span>Price: {{product.price| euroFormat}}</span>

Ответ 9

Я использую это решение в своем проекте (в производстве) во Франции (Он должен ВСЕГДА показывать 5,00 €, НИКОГДА не показывать € 5,00):

<span>Price: {{product.price| currency:""}} €</span>

DEMO

Пожалуйста, прочитайте реальный вопрос об этом сообщении (Angular Js currency, символ euro после), прежде чем downvote будет слишком быстро!!!!!