Javascript 角度输入范围滑块舍入十进制数据绑定值
我已经创建了一个角度范围滑块,用于记录值和显示记录的值Javascript 角度输入范围滑块舍入十进制数据绑定值,javascript,html,angular,forms,input,Javascript,Html,Angular,Forms,Input,我已经创建了一个角度范围滑块,用于记录值和显示记录的值 <input [formControlName]="object.id" [id]="object.id" type="range" [(ngModel)]="object.answer" [step]="object.step" [min]="object.minValue" [max]="object.
<input [formControlName]="object.id" [id]="object.id" type="range" [(ngModel)]="object.answer" [step]="object.step" [min]="object.minValue" [max]="object.maxValue">
滑块显示正确的值,即4
但是,使用answer:3.25
和answer:3.75
,它分别显示3和4。滑块似乎正在将十进制答案值舍入为最接近的整数
我查找输入范围,在步骤部分下,有一个注释说:
当用户输入的数据不符合步进配置时,用户代理可能会舍入到最接近的有效值,当有两个相等接近的选项时,优先选择正向数字
但是,3.25或3.75不是有效值吗?两者都可以写成(最小+步骤的倍数)1步骤(1.1、1.5、2.5)。小数<1步(0.5,0.3)时,似乎显示不正确
编辑2:另外,如果我使用step=“0.25”
而不是[step]=“object.step”
,它会正确显示。因此,静态步骤工作正常,但属性绑定的步骤值工作不正常,步骤值<1也是如此。
我试着复制你的场景,只是稍微做了些调整,看起来效果不错。如果对你有帮助,请看一看。可以根据您的要求随意调整obj的模型值
模板:
<hello name="{{ name }}"></hello>
<p>
Start editing to see some magic happen :)
<br>Please see the console :)
</p>
<input
[id]="obj.id" type="range"
[step]="obj.step" [min]="obj.minValue" [max]="obj.maxValue" [(ngModel)]="obj.answer"
(ngModelChange)="valueChanged($event)"
>
您最初的代码对我不起作用,但您使用的(ngModelChange)
使我将:[(ngModel)]
分为[值]
和(ngModelChange)
,在对最小值、最大值、步长、值的顺序做了一些进一步的挖掘之后,下面的代码对我起了作用:
<hello name="{{ name }}"></hello>
<p>
Start editing to see some magic happen :)
<br>Please see the console :)
</p>
<input
[id]="obj.id" type="range"
[step]="obj.step" [min]="obj.minValue" [max]="obj.maxValue" [(ngModel)]="obj.answer"
(ngModelChange)="valueChanged($event)"
>
import { Component, VERSION, OnChanges } from "@angular/core";
@Component({
selector: "my-app",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent {
name = "Angular " + VERSION.major;
obj = {
id: 1,
answer: 0,
step: 0.25,
minValue: 0,
maxValue: 47.8
};
constructor() {}
valueChanged(event:any){
console.log(event);
console.log(this.obj);
}
}