angular 模板的数学运算

Mathematical operation on angular template

每当我在视图模板中尝试类似的操作时,它都会按预期工作。

{{20*30}}

但每当我尝试

{{somevalue1*somevalue2}}

其中 somevalue1somevalue2 都来自组件,而 somevalue2 来自 api 并且它在一个数组中,它显示的是 NaN。

如何处理?

是String值的原因吗?

如何在模板中转换为数字?

somevalue1 somevalue2 可能是字符串。不过,您需要共享更多代码才能获得真正的答案。

也将 {{somevalue1}}{{somevalue2}} 添加到模板中,这样您就可以确保模板收到您期望的值。

Is it because of the String value?

是的,是的。你不能轻易访问模板范围内的 windows 范围,所以我会做一个方法:

calculateStuff(){
  return Number(somevalue1) * Number(somevalue2);
}

在模板中:

{{calculateStuff()}}

如果字符串不是以代表数字的字符开头,它仍然是 return NaN。

问题是根据某些区域设置格式化的字符串值(在您的情况下是 US locale

你可以八:

  • 在数据检索时将字符串转换为值
  • 创建angular 转换管道
  • 在您的模板中使用助手 function/method
  • 如果可以,请在服务器端调整数据(最好发送原始数据并在需要时对其进行格式化)

有几种处理转换的方法。如果这是您收到该号码的唯一格式。只需替换逗号 Number('1,234.42'.replace(',', '')) 或使用为此目的创建的一些库,如 NumeralJS