Saya memiliki pipa sudut yang harus melakukan beberapa transformasi dasar untuk menampilkan jarak dalam kilometer jika jaraknya lebih besar dari jumlah yang diberikan.

export class DistancePipe implements PipeTransform {

  transform(value: number, ...args: unknown[]): unknown {
    if(value>1000){
      return `${(value/1000):d2} km`;//<--- This won't compile
    }else{
      return `${value} m`;
    }
  }

}

Tapi saya berjuang untuk menampilkan jarak dalam kilometer.

Tujuannya adalah untuk memiliki perilaku berikut:

1141 -> 1.1
501 -> 501
1011 -> 1
2091 -> 2.1
1990 -> 2
999-> 999

Saya mencoba menggunakan ToFixed, tetapi itu akan memaksa untuk menampilkan 0 dari 1.0, yang tidak dapat diterima dalam kasus saya. Sepertinya ini gila karena aku tidak bisa melakukan hal sederhana seperti format

0
J4N 12 Mei 2021, 10:31

1 menjawab

Jawaban Terbaik

Konversi tambahan ke Number menghapus .0. Btw 1151/1000 akan imho (dibulatkan) menjadi 1.2, bukan 1.1.

const formatNr = nr => nr > 1000 ? +((nr/1000).toFixed(1)) : nr;
//                                 ∟ here
const numbers = [1151, 501, 1011, 2091, 1990, 999]; 
console.log(numbers.map(nr => `${nr} -> ${formatNr(nr)}`));
0
KooiInc 12 Mei 2021, 08:02