2017-10-18 58 views
0

我正在使用Ionic(和Angular)。我有一個指令,它在使用DecimalPipe轉換它之後更改輸入的值。這些值只是數字。添加逗號時,插入符號向後移動

問題是,當逗號被添加到數字中時(例如:當用戶將數值從100更改爲1,000時),光標向後移動一個位置。 它看起來並不在意添加了逗號。

我的代碼:

let decimalPipe = new DecimalPipe(window.navigator.language); 
    val = decimalPipe.transform(val, this.numberDecimal()); 


    this.model.valueAccessor.writeValue(val); 
    this.renderer.setElementProperty(this.elementRef.nativeElement.querySelector('input'), 'value', val); 

    this.model.viewToModelUpdate(val); 

modelNgControl類型和rendererRenderer型。

回答

0

問題出在Android設備上。我沒有找到解決方案,因此我寫了一個解決方法,在0毫秒超時後更改脫字符的位置。

// before the change 
let inputElem = this.elementRef.nativeElement.querySelector('input'); 
let caretPos = inputElem.selectionStart; 
let numOfCommas = (value.match(/,/g) || []).length; 
... 

//after the change 
let newNumOfCommas = (val.match(/,/g) || []).length; 
if (newNumOfCommas != numOfCommas) 
{ 
    setTimeout(() => 
    { 
     let pos = newNumOfCommas > numOfCommas ? caretPos+1 : caretPos - 1; 
     inputElem.setSelectionRange(pos, pos); 
    }, 0); 
}