Я пытаюсь вызвать сервисную функцию в Angular 9 из ввода в текстовое поле, чтобы преобразовать Цельсий в Кельвин. Я указал одну функцию, которая принимает градусы в градусах Цельсия, чтобы вычислить в Кельвинах, добавив 273,15. Вместо этого он соединяется на переднем конце. Я проверил код и убедился, что он возвращает строку после того, как принял ее как число. Преобразование в число решает проблему, но может ли кто-нибудь помочь мне понять, почему при наборе номера не произошел сбой вызова или, по крайней мере, он был разыгран на лету?
public convertCToK(celsius: number): number { // e.g. celsius = 1
console.log(typeof celsius); // returns 'string'
// return celsius + 273.15; returns 1273.15
return Number(celsius) + 273.15; // returns 274.15
}
Функция вызова и HTML
fahrenheit: number;
celsius: number;
kelvin: number;
changeC() {
if (!isNaN(this.celsius)) {
this.fahrenheit = Math.round(this.calcService.convertCToF(this.celsius) * 100) / 100;
this.kelvin = Math.round(this.calcService.convertCToK(this.celsius) * 100) / 100;
}
}
<h2>Fahrenheit:
<label>
<input style="color:green" type='text' [(ngModel)]='fahrenheit' (keyup)="changeF()">
</label>
</h2>
<hr>
<h2>Celsius:
<label>
<input style='color:blue' type='text' [(ngModel)]="celsius" (keyup)="changeC()">
</label>
</h2>
<hr>
<h2>Kelvin:
<label>
<input style="color:red" type='text' [(ngModel)]='kelvin' (keyup)="changeK()">
</label>
</h2>