Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度输入范围滑块舍入十进制数据绑定值_Javascript_Html_Angular_Forms_Input - Fatal编程技术网

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);
  }
}