时间:2018-02-06 13:40:03

标签: angular typescript

在HTML中:

<div id="b" *ngFor="let key of metadataKeys; let i = index">
    <span> {{key}} -></span>
    <span id="a" #metaValue contentEditable="" [innerHTML]="this.header.metaDataJson[key]"
        (keyup)="metaDataChange(metaValue, i)"></span> 
</div>

在ts文件中,我尝试设置光标位置:

metaDataChange(element, index) {
    this.header.metaDataJson[this.metadataKeys[index]] = element.innerHTML;
    let caretCurPos = element.innerHTML.length;
    let span = document.getElementById('a');
    let range = document.createRange();
    let node = document.getElementById("b"); 
    range.setStart(node.childNodes[0], 1); 
    range.setStart(span, 1); 
    let sel = window.getSelection();
    range.collapse(true);
    sel.removeAllRanges();
    sel.addRange(range);
    span.focus(); 
}

当设置新值时,光标在此行的开头跳转。

this.header.metaDataJson[this.metadataKeys[index]] = element.innerHTML;

如何避免跳跃插入符号?是否可以使用contentEditable的替代方法?而且我不想要使用输入。

0 个答案:

没有答案