| @@ -6,6 +6,7 @@ import { | |||
| Output, | |||
| } from '@angular/core'; | |||
| import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; | |||
| import {debounceTime, Subject} from 'rxjs'; | |||
| @Component({ | |||
| selector: 'app-slider-range', | |||
| @@ -24,11 +25,16 @@ export class SliderRangeComponent implements ControlValueAccessor { | |||
| @Input() max: number = 300; | |||
| @Input() icon: string = ''; | |||
| @Output() valueChange = new EventEmitter<number>(); | |||
| @Input() disable: boolean = false; | |||
| onChange = (value: number) => {}; | |||
| onTouched = () => {}; | |||
| private valueChangeSubject = new Subject<number>(); | |||
| constructor() {} | |||
| constructor() { | |||
| this.valueChangeSubject.pipe(debounceTime(500)).subscribe(value => { | |||
| this.valueChange.emit(value); | |||
| }); | |||
| } | |||
| writeValue(value: number): void { | |||
| this.value = value; | |||
| @@ -50,7 +56,7 @@ export class SliderRangeComponent implements ControlValueAccessor { | |||
| this.value = event.target.value; | |||
| this.onChange(this.value); | |||
| this.onTouched(); | |||
| this.valueChange.emit(this.value); | |||
| this.valueChangeSubject.next(this.value); | |||
| } | |||
| onSliderChangeBackground() { | |||
| @@ -88,7 +94,8 @@ export class SliderRangeComponent implements ControlValueAccessor { | |||
| this.value += 10; | |||
| this.onChange(this.value); | |||
| this.onTouched(); | |||
| this.valueChange.emit(this.value); | |||
| this.valueChangeSubject.next(this.value); | |||
| } | |||
| } | |||
| @@ -97,7 +104,7 @@ export class SliderRangeComponent implements ControlValueAccessor { | |||
| this.value -= 10; | |||
| this.onChange(this.value); | |||
| this.onTouched(); | |||
| this.valueChange.emit(this.value); | |||
| this.valueChangeSubject.next(this.value); | |||
| } | |||
| } | |||
| } | |||