【问题标题】:Mathematical operation on angular template角度模板的数学运算
【发布时间】:2017-12-31 16:10:55
【问题描述】:

每当我在视图模板中尝试这样的事情时,它都会按预期工作。

{{20*30}}

但每当我尝试时

{{somevalue1*somevalue2}}

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

如何处理?

是不是因为String值?

如何将其转换为模板中的数字?

【问题讨论】:

  • 请分享更多代码。具体来说,JavaScript 代码可以更好地了解您如何获取数据。此外,分享这些变量的类型。

标签: javascript angular angular2-template


【解决方案1】:

是不是因为String值?

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

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

在模板中:

{{calculateStuff()}}

如果字符串不以代表数字的字符开头,它仍然会返回 NaN。

【讨论】:

  • 实际上我得到了像 3,947.5825 这样的响应,它是用逗号分隔的,所以每当我将其转换为数字逗号时,都会进入其中并再次返回 NAN。有什么办法解决这个问题吗?
  • 看看下面的 vojtechs 回答。他在任何事情上都是正确的。该号码已国际化。只需将逗号替换为空字符串,然后按照前面的建议调用 Number 方法。
【解决方案2】:

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

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

【讨论】:

  • 我的回复就像 3,947.5825 一样,它是用逗号分隔的,所以每当我将其转换为数字逗号时,都会进入其中并再次返回 NAN。有什么办法解决这个问题吗?
  • 哦,是的,您必须删除逗号。关于 SO 还有其他问题。
【解决方案3】:

问题是根据某些语言环境格式化的字符串值(在您的情况下是US locale

你可以八:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-28
    • 2011-09-11
    • 2011-09-13
    • 1970-01-01
    • 2012-01-20
    • 2018-02-21
    • 2010-11-20
    • 1970-01-01
    相关资源
    最近更新 更多