用于将数字格式化并打印为正数的 Angular HTML 代码(不带减号)

use*_*775 3 angular2-directives angular2-template angular

我有一个可以是正值或负值的数字。我想总是把它打印成负片。有没有办法在 Angular 2 html 代码中格式化它?我知道如何在打字稿/javascript 中做到这一点。但是,想知道我是否可以直接在 Angular HTML 代码中进行格式化

Plo*_*ppy 5

获取数字的负数的一种快速方法是:

-Math.abs(num);
Run Code Online (Sandbox Code Playgroud)

Angular 使用管道来转换在模板中呈现的数据。创建自定义管道:

如果你使用 angular-cli ng g pipe minus

@Pipe({name: 'minus'})

export class MinusPipe implements PipeTransform {
  transform(num: number, args?: any): any {
    return -Math.abs(num);
  }
}
Run Code Online (Sandbox Code Playgroud)

在您的模板中:

{{ myNumber | minus }}
Run Code Online (Sandbox Code Playgroud)


bel*_*uga 5

老问题但仍然现实。作为创建新管道的替代方法,您可以在模板中使用全局对象,例如“数学”。

在你的控制器中定义如下:

public myMath = Math;
Run Code Online (Sandbox Code Playgroud)

现在您可以在 html 模板中使用它:

{{myMath.abs(the_number)}}
Run Code Online (Sandbox Code Playgroud)

  • 这绝对有效,但这不是一个很好的解决方案。将绑定直接连接到方法会导致每当屏幕上的任何内容发生变化时 Angular 都会重新计算它。使用管道让 Angular 智能地知道何时更新它,而不是每次发生变化时 Angular 都必须重新运行该方法。 (2认同)