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