我想使用Angular Materials和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
1 回答
发生此问题的原因是
change()
正在设置事件更改范围之外的项的值 . 解决此问题的一种方法是使用ChangeDetectorRef
将change()
包含在更改检测范围内 . 另一种方法是直接设置幻灯片值以再次处理更改事件:Component side :
Template side :
WORKING DEMO