Angular 2 - 计算的数字有多圆?

Ral*_*alf 4 rounding angular

我有一个*ngFor循环,想要计算一个值 - 小数点后2位.

计算工作:

 {{ ((date | amDifference : item.startdate : 'minutes' :true)/item.duration*100)  }}
Run Code Online (Sandbox Code Playgroud)

但我怎么能绕圈?我试着这样:

 {{ num | ((date | amDifference : item.startdate : 'minutes' :true)/item.duration*100) : '1.2-2' }}
Run Code Online (Sandbox Code Playgroud)

但这会产生错误:

zone.js:355未处理的Promise拒绝:模板解析错误:解析器错误:意外的令牌(,第8列的预期标识符或关键字在[{{num |((date | amDifference:item.startdate:'minutes':true)/ item.duration*100):'1.2-2'}}

Dim*_*oid 14

你需要另一个管道才能做到这一点

import {Pipe} from 'angular2/core';

@Pipe({name: 'round'})
export class RoundPipe {
  transform (input:number) {
    return Math.floor(input);
  }
}
Run Code Online (Sandbox Code Playgroud)

模板:

{{ date | amDifference : item.startdate : 'minutes' : true | round }}
Run Code Online (Sandbox Code Playgroud)


edk*_*ked 12

一个可以使用有角的内置管道,例如数字

{{value | number:'1.0-0'}}

如果要实现它:

@Pipe({name: 'round'})
export class RoundPipe {
  transform (input:number) {
    return Math.floor(input);
  }
}
Run Code Online (Sandbox Code Playgroud)

在模板中使用

{{1,1 | round}} => 1
{{2,1 | round}} => 2
Run Code Online (Sandbox Code Playgroud)

另一个有用的管道是第十轮:

@Pipe({name: 'roundTen'})
export class RoundTenPipe implements PipeTransform {
  transform(value: number): number {
    return Math.round(value / 10) * 10;
  }
}
Run Code Online (Sandbox Code Playgroud)

在模板中使用

{{11 | roundTen}} => 10
{{21 | roundTen}} => 20
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。谢谢 (2认同)

Vel*_*tam 7

如果它的货币 {{value | currency:'INR':true: '1.0-0'}}

如果只需要NUMBER {{value | number:'1.0-0'}}

1.0-0表示:小数点前至少一位,小数点后至少0位。

https://angular.io/api/common/DecimalPipe