declare type ValueType = string | number | undefined; export class InputNumberModel { viewValue: ValueType = undefined; modelValue: ValueType = undefined; focus: boolean = false; digits: number = 2; _fmt:string|undefined = undefined; emit: any; ref: any; get numberFormat() { // if(this._fmt==undefined){ this._fmt = this.createNumberFmt(this.digits); // } return this._fmt; } createNumberFmt(num:number){ let numFmt = "###,###,###,###,###,###"; if(num>0){ numFmt += "."; for (let i = 0; i < num; i++) { numFmt += "0"; } } return numFmt; } bind(digits: number,ref:any,emit:any) { this.digits = digits==undefined?2:digits; this.ref = ref; this.emit = emit; } setViewValue(value: ValueType) { this.viewValue = value; if(value!=undefined && (value+"").endsWith(".")) return; this.modelValue = this.viewToModel(value); this.triggerVm(); } viewToModel(vv: ValueType):ValueType { if(vv===undefined || vv==="" || vv==="-") return; if(!this.focus){ this.viewValue = Number.format(Number.parse(vv),this.numberFormat); } return Number.parse(vv); } setModelValue(value: ValueType) { this.modelValue = value; this.viewValue = this.modelToView(value); } modelToView(mv: ValueType): ValueType { if(mv===undefined || mv===null || mv=== '') return ''; if(this.focus){ return mv+''; } return Number.format(Number.parse(mv),this.numberFormat); } isEmpty() { return this.modelValue === undefined || this.viewValue === null || this.viewValue === ''; } triggerVm(){ this.emit('update:value',this.modelValue); this.emit('change',this.modelValue); } }