编号 Pipe - Angular 2 的参数是啥

Posted

技术标签:

【中文标题】编号 Pipe - Angular 2 的参数是啥【英文标题】:What are the parameters for the number Pipe - Angular 2编号 Pipe - Angular 2 的参数是什么 【发布时间】:2016-11-23 11:54:15 【问题描述】:

我使用下面的数字管道将数字限制为两位小数。

 exampleNumber | number : '1.2-2' 

我想知道“1.2-2”背后的逻辑是什么?我已经尝试过这些尝试实现过滤到零小数位但无济于事的管道。

【问题讨论】:

angular.io/docs/ts/latest/api/common/index/… angular.io/docs/ts/latest/api/common/index/… alligator.io/angular/built-in-pipes-angular 这只适用于 Angular 2 【参考方案1】:

参数的语法如下:

minIntegerDigits.minFractionDigits-maxFractionDigits

所以你的'1.2-2' 的例子意味着:

小数点前至少显示 1 位数字 小数点后至少显示两位数 但不超过 2 位数

【讨论】:

不幸的是,这也将数字四舍五入,更糟糕的是,文档中没有关于它的消息 @Blauhirn 我也有同样的问题,是否有简单的解决方法或者我应该创建自己的管道? @phil294 我知道你的评论很旧,但是,现在有关于四舍五入的描述。 angular.io/api/common/DecimalPipe 如果 minFractionDigits 大于 0,则会出错。小数 (2) 后的最小位数高于最大值 (0)。对于管道'DecimalPipe'【参考方案2】:

    关于你的第一个问题。管道的工作原理如下:

    numberValue | number: minIntegerDigits.minFractionDigits-maxFractionDigits

    minIntegerDigits:小数点前显示的最小整数位数,默认设置为1

    minFractionDigits:小数点后显示的最小整数位数

    maxFractionDigits:小数点后显示的最大整数位数

2.关于你的第二个问题,过滤到零小数位如下:

 numberValue | number: '1.0-0' 

如需进一步阅读,请查看以下blog

【讨论】:

【参考方案3】:

来自DOCS

将数字格式化为文本。组大小和分隔符和其他 特定于区域设置的配置基于活动区域设置。

语法:

number_expression | number[:digitInfo[:locale]]

其中 expression 是一个数字:

digitInfo 是一个具有以下格式的字符串:

minIntegerDigits.minFractionDigits-maxFractionDigits
minIntegerDigits 是要使用的最小整数位数。默认为 1 minFractionDigits 是最小位数 在分数之后。默认为 0。 maxFractionDigits 是最大值 分数后的位数。默认为 3。 locale 是一个字符串,用于定义要使用的语言环境(默认使用当前的 LOCALE_ID)

DEMO

【讨论】:

【参考方案4】:

'1.0-0'会给你 零小数位,即没有小数。 例如 500 美元

【讨论】:

我正在尝试将像 114.5 这样的数字格式化为显示为 114,但是当我使用“1.0-0”时,它显示“115”有人知道为什么吗? 这是因为 angular 将值四舍五入并为 114.5 提供 115。 为什么投反对票?这有效并回答了如何过滤到零小数位的问题。谢谢@alchibaucha 准确地解决了我的问题。【参考方案5】:

'0.0-0' 将为您提供带有 ',' 的圆形格式数字

100000.2 -> 100,000

很酷

【讨论】:

以上是关于编号 Pipe - Angular 2 的参数是啥的主要内容,如果未能解决你的问题,请参考以下文章

Angular 中的不纯管道是啥?

Angular 2+ - 检查 Pipe 是不是返回原始列表的空子集

Angular 2. *ngFor 的问题,当我使用 Pipe 时

angular 2 custom sort pipe 请帮帮我

4Angular2 pipe

angular之自定义管道