ng-docs / ng-docs.github.io

Angular 官方文档中文版预编译网站
https://angular.cn
Other
103 stars 22 forks source link

angular8中如何获取文本框中选中的文字 #114

Open sing-gor opened 5 years ago

sing-gor commented 5 years ago

我在开发angular的markdown编辑器。
实时预览的部分已经完成,且写出了关于ngx-markdown的toc锚点拓展。

我想通过在获取文本框中被选中的文字。
从而开发出加粗斜体、~删除~、等等的功能。
我查阅了文档,找不到相关的api。
求各位指点一下。
最好不要涉及到jquery。
尽量是angular的形式解决。

tc9011 commented 5 years ago

和 angular 没有关系,DOM2级遍历和范围模块定义了范围接口,可以参考一下Range,一般document.selection.createRange() 根据当前文字选择返回 TextRange 对象,再配合execCommand应该就可以实现你的需求

sing-gor commented 5 years ago

和 angular 没有关系,DOM2级遍历和范围模块定义了范围接口,可以参考一下Range,一般document.selection.createRange() 根据当前文字选择返回 TextRange 对象,再配合execCommand应该就可以实现你的需求

解决了,不过是利用了textarea的一个属性方法。
如下所示:
模板部分

<textarea

  (select)="showSelectedText(textarea.selectionStart, textarea.selectionEnd)"
  #textarea [(ngModel)]="markdownText"  cols="30" rows="10"

  ></textarea>

ts部分

showSelectedText(selectionStart, selectEnd) {

    console.log(selectionStart);
    console.log(selectEnd);
    let selectText = this.markdownText.substring(selectionStart, selectEnd);
    console.log(selectText);
  }
sing-gor commented 5 years ago

在什么地方可以加上已解决 的标签啊???

asnowwolf commented 5 years ago

我加上了。

asnowwolf commented 5 years ago

多谢分享!