Попытка установить положение курсора внутри текстового поля после обновления объекта модели - PullRequest
0 голосов
/ 23 мая 2019

Я хочу установить положение курсора после изменения объекта модели, но он фактически пытается установить положение курсора до обновления значения текстового поля.

HTML:

    <input type="text" name="test" id="test" [(ngModel)]="myString">
    <button type="button" (click)="updateText('testStr')">

TS:

    myTextBox: HTMLInputElement;

    ngOnInit() {
    this.myTextBox = document.getElementById('test');
    }

    updateText(str:String){
    this.myString+=str;
    this.myTextBox.focus();
    this.myTextBox.setSelectionRange(2,2);
    }

Таким образом, поскольку он пытается установить позицию курсора до фактического обновления текста, он может только focus(). Но если я ничего не привязываю к текстовому полю и не обновляю его текст, выполняя this.myTextBox.setAttribute('value',str);, а затем focus() и вызывая setSelectionRange, это работает. Что мне делать?

1 Ответ

1 голос
/ 23 мая 2019

попробуйте это:

updateText(str:String){
    this.myString+=str;
    setTimeout(()=>{
        this.myTextBox.focus();
        this.myTextBox.setSelectionRange(2,2);
    },0);
}
...