Angular Material 滑块 - 将值设置为零时出现问题
Angular Material Slider - issue with setting value to zero
我想使用 Angular 材质和 Angular 5 创建一个滑块,当滑块上的值设置为 0 时,它会向上移动到 10。
我遇到一个问题,如果滑块已经在 10,则它不会移回 10,否则它会。
myComponent.html
<mat-slider [(ngModel)]="weight" (change)="change()"></mat-slider>
myComponent.ts
weight = 50;
change(){
if(this.weight == 0){
this.weight = 10;
}
}
我在 StackBlitz 中重现了这个问题:https://stackblitz.com/edit/angular-whq8ll
出现此问题是因为 change()
设置的项目值超出了事件更改的范围。解决此问题的一种方法是将 change()
包含在 ChangeDetectorRef
的变化检测范围内。另一种方法是直接设置幻灯片值再次触发更改事件:
组件端:
weight = 50;
@ViewChild('slider')slider;
change(){
console.log(this.slider.value);
if(this.weight == 0){
this.slider.value = 10;
}
}
模板端:
<mat-slider [(ngModel)]="weight" #slider (change)="change()"></mat-slider>
我想使用 Angular 材质和 Angular 5 创建一个滑块,当滑块上的值设置为 0 时,它会向上移动到 10。
我遇到一个问题,如果滑块已经在 10,则它不会移回 10,否则它会。
myComponent.html
<mat-slider [(ngModel)]="weight" (change)="change()"></mat-slider>
myComponent.ts
weight = 50;
change(){
if(this.weight == 0){
this.weight = 10;
}
}
我在 StackBlitz 中重现了这个问题:https://stackblitz.com/edit/angular-whq8ll
出现此问题是因为 change()
设置的项目值超出了事件更改的范围。解决此问题的一种方法是将 change()
包含在 ChangeDetectorRef
的变化检测范围内。另一种方法是直接设置幻灯片值再次触发更改事件:
组件端:
weight = 50;
@ViewChild('slider')slider;
change(){
console.log(this.slider.value);
if(this.weight == 0){
this.slider.value = 10;
}
}
模板端:
<mat-slider [(ngModel)]="weight" #slider (change)="change()"></mat-slider>