Angular 过滤最大小数

Angular filter maximum decimals

我想创建一个新的过滤器,以便我得到一个输入,我给出了 最大 小数的数量来显示,return 一个格式化的字符串根据语言环境。

Input(number)    Output for 1 decimal    Output for 2 decimals
1.01             1                       1.01 / 1,01
1.001            1                       1
1.1              1.1 / 1,1               1.1 / 1,1
1                1                       1
1000             1 000 / 1.000 / 1,000   1 000 / 1.000 / 1,000

我想将 angular 的内置数字过滤器用于区域设置,但我不知道如何删除小数,因为如果我在数字过滤器之后执行此操作,那么我就有了一个区域设置特定的字符串,我以前不能这样做,因为在使用 number:x

之前我不知道如何舍入

有什么提示或想法吗?

你不能,查看过滤器的实现:

// format fraction part.
while (fraction.length < fractionSize) {
  fraction += '0';
}

过滤器总是添加零。如果你想达到你想要的效果,你必须自己编写过滤器。

添加了我自己的过滤器,实现如下:

app.filter('numberNoDecimalsIfZeroFilter', function($filter) {
    return function(value, fractionSize) {
        //If has  no decimals, then don't show
        if(value%1 === 0){
            fractionSize = 0;
        }
        return $filter('number')(value,fractionSize);
    }
});

这样使用:

    <div class="form-group">
      <label class="control-label">Amount: </label>
      {{::value.amount | numberNoDecimalsIfZeroFilter}}
    </div>