在Angular中以德语格式输入十进制数"使用逗号"不太好用

时间:2015-09-01 20:11:22

标签: angularjs localization internationalization

我正在尝试根据用户PC本地化数据输入模块(以角度编写)(例如在PC语言设置为德语的情况下),因此模块应该接受&#34;,&#34;作为小数分隔符而不是&#34;。&#34; , 所以我使用了Angular本地化文件(例如:angular-locale_de-de.js)但是当使用逗号插入十进制数时我遇到了一个问题,如下所示: 在德语PC设置中,当用户以此格式插入十进制数时,#34; 5,4&#34;在输入文本框中,标签上显示的值显示为空而不是5,40 代码中的Label如下所示:<label>{{mynumber | number:2}}</label>

但是当用户插入时:&#34; 5.4&#34;标签显示&#34; 5,40&#34; 为简单起见,我使用下面的代码

<html>
   <head>
   <script LANGUAGE=javascript src="angular.js"></script>
       <script LANGUAGE=javascript src="https://code.angularjs.org/1.2.9/i18n/angular-locale_de-de.js"></script>
      </script>
</head>
<body ng-app  >
<input  type=number id="txt" ng-model="mynumber" >
<label>{{mynumber| number : 2}}</label>
</body>
</html>

在控制器上使用以下过滤器时也适用: $filter('number')(mynumber, 2) 当你使用逗号分隔符插入数字时(如上面应该是5,40 而不是空),你可以帮助我们如何正确格式化数字吗? 请注意:即使使用&#34; angular-locale_de-de.js&#34;

,这个问题仍然存在

您也可以请一下如何加载正确的角度定位文件(例如:angular-locale_de-de.js,具体取决于用户语言PC设置)? 谢谢

2 个答案:

答案 0 :(得分:2)

有角度指令(我是作者),它只允许数字,减号和选定的分隔符&#39;,&#39;或&#39;,&#39;。链接:https://github.com/uhlryk/angular-dynamic-number

您可以配置整数位数,小数位数,选择分隔符,或允许正数,负数或两者都有。它会阻止输入视图值中的其他字符,但会动态转换模型值。此模块还具有修改ngBind的过滤器,以显示例如逗号分隔符而不是点。

安装后(bower,npm或manualy)将模块作为依赖项添加到您的应用程序,然后:

<input  type="text" id="txt" ng-model="mynumber" awnum num-sep="," num-fract="2">
<label>{{mynumber| awnum : 2 : ',' : 'round' : 'true'}}</label>

我构建此模块以处理波兰价格的表格。

答案 1 :(得分:0)

如果您想将英文数字格式转换为德语数字格式。您可以在打字稿中使用以下代码 -

const number = 123456.789;

console.log(new Intl.NumberFormat('de-DE').format(number));
// expected output: "123.456,79"

您可以在此处找到更多数字格式和详细信息 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat