【发布时间】:2021-01-26 11:39:30
【问题描述】:
在Angular中,如何获取用户刚刚单击或双击的单词?
我想要做的是:用户双击文本中的一个单词,然后突出显示该文本。
文本:“这只是一些文本”
用户点击“just”这个词 > 我在 TS 中得到它。
我用谷歌搜索过,但我发现的唯一信息是 Angular JS 中已有 10 年历史的线程。
提前致谢!
【问题讨论】:
标签: angular string text click selection
在Angular中,如何获取用户刚刚单击或双击的单词?
我想要做的是:用户双击文本中的一个单词,然后突出显示该文本。
文本:“这只是一些文本”
用户点击“just”这个词 > 我在 TS 中得到它。
我用谷歌搜索过,但我发现的唯一信息是 Angular JS 中已有 10 年历史的线程。
提前致谢!
【问题讨论】:
标签: angular string text click selection
您可以通过从文本中获取所选单词并将其替换为 HTML 标记以突出显示它来实现。
这是工作示例 -
export class AppComponent {
text = "Start editing to see some magic happen";
selectedWord: string;
highlight(event) {
this.selectedWord = window.getSelection().toString();
this.text = this.text.replace(
this.selectedWord,
"<mark>" + this.selectedWord + "</mark>"
);
}
}
在 html 文件中,你需要对文本使用 innerHTML 并像这样在双击事件上调用 highlight() 方法 -
<p [innerHTML]="text" (dblclick)="highlight($event)"></p>
Here 也是一个 stackbiltz 工作示例。
【讨论】:
为此,您需要使用 hostListner 来监控 dblclick。请检查以下内容
@HostListener('document:dblclick', ['$event'])
onMouseDown(event) {
let selectedText:any = '';
if (window.getSelection) {
selectedText = window.getSelection().toString();
} else if (document.getSelection) {
selectedText = document.getSelection().toString();
}
console.log(selectedText);
return;
}
我认为这对你有帮助
【讨论】: