如何在 Angular 2 中获取内容可编辑的“div”的插入符号位置?

Posted

技术标签:

【中文标题】如何在 Angular 2 中获取内容可编辑的“div”的插入符号位置?【英文标题】:How to get caret position for a contenteditable 'div' in Angular 2? 【发布时间】:2017-04-17 21:05:10 【问题描述】:

我有以下代码:

<div #test (click)="onClick(test)" contenteditable="true">
            This text can be edited by the user.
</div>

@ViewChild('test') el:ElementRef;

constructor(private elementRef: ElementRef) 

onClick(event) 
  console.log(this.el.nativeElement); 
  let cursor = this.el.nativeElement.selectionStart; //gives undefined

当用户点击文本时,如何获取 'div' 元素的光标位置?

【问题讨论】:

【参考方案1】:

selectionStarthtmlInputElement 的属性。

<div #test (click)="onClick(test)" contenteditable="true">
            This text can be edited by the user.
</div>

to 

<input  #test (click)="onClick(test)"  
  value='This text can be edited by the user.' />

希望这会有所帮助!

【讨论】:

谢谢,但我确实需要使用 而不是 。我可以使用“window.getSelection()”获取范围,但我在某处读到在 Angular 2 中像这样操作 DOM 是不安全的。 @swapp1990,这并不完全是在操纵 - 你没有改变 DOM 中的任何东西,只是读取一个属性。尽管不鼓励,但如果您确实需要在 DOM 中测量某些内容,这是您唯一的选择。 这不是这个问题的答案,问题是问如何获取 contenteditable 的插入符号,而不是输入!

以上是关于如何在 Angular 2 中获取内容可编辑的“div”的插入符号位置?的主要内容,如果未能解决你的问题,请参考以下文章

Angular js中的内容可编辑

如何在 Angular 中使用 Datalist Dropdown 预选值?

如何获取可编辑div或body里光标的像素位置?

获取内容可编辑的插入符号位置

如何在Angular2中使禁用的反应形式可编辑

如何获取包含图像的内容可编辑 div 的插入符号位置