需要角2+货币管道来显示2个小数并接受各种用户输入

时间:2018-07-10 18:47:30

标签: javascript angular angular-directive angular-pipe

我有一个输入,需要显示货币。我需要它始终显示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

1 个答案:

答案 0 :(得分:2)

根据我的经验,我习惯于仅更改只读数据或如何显示数据的管道。为了更改Angular中输入的格式,我还原为使用自定义指令。

这是我认为可以完成您要执行的操作的指令:

https://www.npmjs.com/package/ng2-currency-mask