2017-05-26 41 views
0

我試圖在使用Angular和TypeScript的HTML文件中進行此操作:{{(i/5) % 3}}如何截斷打字稿中的數字

問題是,當i/5沒有返回自然數時,它不能繼續操作% 3部分。所以問題是:如何截斷i/5以獲得可接受的操作結果?

順便說一句,我試圖用JavaScript函數Math.trunc(i/5)但我得到一個錯誤,指出:

「無法讀取的未定義的屬性TRUNC」

+0

這個問題有沒有關係打字稿。它與Angular模板有關。你應該修改標題。無論如何,你不能在模板中使用'Math'(或任何其他全局)。在這種情況下,你可以使用'(~~(i/5))%3'。或者在你的TypeScript文件中計算它。 – 2017-05-28 13:29:28

+0

或使用'(i - i%1)%3'。 – 2017-05-28 13:35:07

+0

最好在組件中執行邏輯,並將結果顯示在模板中。即定義一個方法或一個變量來完成數學運算並顯示結果。這樣你也可以訪問Math。*方法。 – mok

回答

1

不知道這是你想要的。你可以嘗試使用一個DecimalPipe

{{((i/5) | number:'1.0-0') % 3}} 

但看起來像上面四捨五入。

2

我不明白的問題。但是,您可以嘗試 Math.floor(i/5) % 3。當您除以負數時,這會導致錯誤的結果。

+0

您不能在模板內使用'Math'。 – 2017-05-28 13:30:02

1

您可以使用三種不同的數學API。

Math.floor總是給你最低的數字:

Math.floor(1/5) // 0 
Math.floor(4/5) // 0 

Math.ceil總是給你最高的號碼:

Math.ceil(1/5) // 1 
Math.ceil(4/5) // 1 

Math.round爲您提供了一個與最鄰近:

Math.round(1/5) // 0 
Math.round(4/5) // 1 
+0

但是你不能在模板中使用'Math'。 – 2017-05-28 13:28:07

0

這個問題與TypeScript無關。 TypeScript不提供新的操作符或函數或截斷數字的方法。 TypeScript只是JavaScript上的一個類型層。

這是一個角度問題。您不能在模板中使用Math(任何其他全局變量)。您的選項是:

  • (~~(i/5)) % 3
  • (i/5 - (i/5) % 1) % 3
  • 計算它在你的打字稿文件
+0

這些選項都不適用於我。第一個我得到了一個意想不到的令牌,第二個給我帶來了第一個錯誤。我會和第三個一起去,但主要的問題是如何在模板上做到這一點。感謝您的時間,並且您對'數學'這個問題是正確的。 – RaulGM