Le code suivant sert à récupérer la position et à mettre le curseur dans un div contenteditable
private node:any;
private position:number;
//donne la position du curseur dans div editable
//source https://jsfiddle.net/cpatik/3QAeC/
getCaretPosition() {
let range=window.getSelection().getRangeAt(0);
let selection=window.getSelection()
this.node=selection.focusNode; //récupère le noeud
this.position=range.startOffset; //récupère la position dans le noeud
}//fin getposition curseur
//positionne le curseur
setCaretPosition() {
let range=document.createRange();
let sel=window.getSelection();
range.setStart(this.node, this.position);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
}//fin setposition