/
number-value-accessor.ts
39 lines (36 loc) · 1.15 KB
/
number-value-accessor.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { Directive, ElementRef, forwardRef } from "@angular/core";
import { NG_VALUE_ACCESSOR } from "@angular/forms";
import { BaseValueAccessor } from "./base-value-accessor";
import { Slider } from "tns-core-modules/ui/slider";
const NUMBER_VALUE_ACCESSOR = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => NumberValueAccessor),
multi: true,
};
/**
* The accessor for setting a value and listening to changes that is used by the
* {@link NgModel}
*
* ### Example
* ```
* <Slider [(ngModel)]="model.test">
* ```
*/
@Directive({
selector:
"Slider[ngModel],Slider[formControlName],Slider[formControl]," +
"slider[ngModel],slider[formControlName],slider[formControl]",
providers: [NUMBER_VALUE_ACCESSOR],
host: {
"(valueChange)": "onChange($event.value)",
},
})
export class NumberValueAccessor extends BaseValueAccessor<Slider> { // tslint:disable-line:directive-class-suffix
constructor(elementRef: ElementRef) {
super(elementRef.nativeElement);
}
writeValue(value: any): void {
const normalized = super.normalizeValue(value);
this.view.value = normalized;
}
}