我使用Angular Decimal和Date管道来显示格式化为用户(浏览器)语言环境的数字和日期 .

<div>
    Issued at: {{contact.date_issued | date }}
    Amount: {{contact.total_amount | number : '1.2-2'}}
</div>

<!-- output: 
     Issued at: 14. 5. 2018
     Amount: 1 200,99 
-->

但是,我需要相反的功能 - 使用用户区域设置将字符串从输入转换为数字 . 据我所知,Angular仍然没有任何内置函数 . 所以,我为此构建了自定义函数:

<input class="form-control" type="text" [ngModel]="contact.total_amount | number" 
    (ngModelChange)="contact.total_amount=myNumberConvert($event)" >

<div>
    Issued at: {{contact.date_issued | date }}
    Amount: {{contact.total_amount | number : '1.2-2' }}
</div>

<!-- output: 
     Issued at: 14. 5. 2018
     Amount: 1 200,99 
-->

myNumberConvert 中我做了简单的替换,将字符串格式化为默认的JavaScript数字格式(1200.99),然后是Number.parse(..):

myNumberConvert(input: string) : number {

   // I need to convert "1 200,99" to "1200.99"
   // ' ' is thousands separator
   input = input.replace(' ', '');

   // ',' is decimal separator
   input = input.replace(',', '.');

   return Number.parse(input);
}

两个分隔符现在都是硬编码的,我想从用户(浏览器)语言环境中替换它们,比如 . 如何从区域设置获取这些信息?

1 /将Locale注入指令/类

2 / Locale是否包含以下信息:

  • 小数点分隔符

  • 千位分隔符

  • 日期格式等..

谢谢!