我有一个输入,需要显示货币。我需要它始终显示2个小数位并且没有美元符号。由于我不关心美元符号,因此决定使用number
管道。该输入可由用户编辑,但是当我使用管道时,出现了不良行为。
以下是输入的代码:
<input type="text"
[ngModel]="myCurrencyVar | number:'1.2-2'"
(ngModelChange)="myCurrencyVar=$event">
此方法的问题在于,如果用户要输入$2.55
之类的内容,则在键入数字2.00
时,该值将跳至2
他们必须按下两次delete
键以清除零,然后当他们按下5
键时它将变成$2.50
,则用户必须delete
最后一个{再次{1}}进入最后一个zero
。
我也尝试过:
5
但是当需要在屏幕上显示<input type="text"
[ngModel]="myCurrencyVar | number:'1.0-2'"
(ngModelChange)="myCurrencyVar=$event">
时,该方法将显示类似$2.5
的内容。我需要它来始终显示美分而又没有这种奇怪的行为。
我也尝试过使用货币管道:
$2.50
有什么办法可以让用户始终显示2个小数,而不会使它显得愚蠢?
更新1
这是我得到更新为双向装订的建议后将其更改为的内容,但是当我更改输入中的美元金额时,该模型似乎没有更新:
currency:'USD':'':'1.2-2'"
更新2
我对屏幕更新问题的解决方案是回到使用<input type="text"
([ngModel])="myCurrencyVar"
currencyMask [options]="{ prefix: '' }">
并在传递(ngModelChange)
后添加update()
函数,如下所示:
$event
答案 0 :(得分:2)
根据我的经验,我习惯于仅更改只读数据或如何显示数据的管道。为了更改Angular中输入的格式,我还原为使用自定义指令。
这是我认为可以完成您要执行的操作的指令: