我希望实现数字格式化,这样如果数字是圆的,则应该没有小数占位符.00
,否则使用2并且只有2个小数位。例如:
1.23 -> 1.23
1.23456 -> 1.24
1.2 -> 1.20
1.0 -> 1
1 -> 1
根据文档,您只能指定小数位数范围(例如|number:'.0-2'
)而不是特定选择(例如|number:'.0,2'
);我是对的还是有办法?
我知道我可以通过一些*ngIf
来实现同样的目标,但如果可能的话,我希望避免这样做。
答案 0 :(得分:1)
如果您想对变量执行多项操作,最佳做法是创建两个不同的管道并将它们一起使用。重要的是从左到右的顺序。如果您只想显示两位数字,可以使用内置管道,如deicmalPipe:
Angular Doc 或者只检查该主题: Stack overflow answer
如果要显示1而不是1.00,可以创建自定义管道,检查字符是00还是其他字符。如果是00则返回没有这些数字的数字。
答案 1 :(得分:1)
要显示1而不是1.0,您可以试试这个。
{{x | number:'1.0-0'}}
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以这样创建自己的DecimalPipe:
@Pipe({ name: 'number' })
export class MyCurrencyPipe implements PipeTransform {
constructor(
private decimalPipe : DecimalPipe,
) {
}
transform(value: any, digitsInfo?: string, locale?: string): string | null {
let result;
result = this.decimalPipe.transform(value, digitsInfo, locale);
// …do something with your result
return result;
}
}
如果可以的话
removeTrailingZeros? : boolean
添加到transform()方法中。 或
digitsInfo
之类的'1.0,2'
也不要忘记在模块的提供程序中添加MyDecimalPipe
,以确保模板在编写MyDecimalPipe
时使用DecimalPipe
而不是角度{{ foo | number:'1.0,2' }}
。