gpt4 book ai didi

angular - 我如何将单个单词显示为 Angular 完整消息的超链接

转载 作者:行者123 更新时间:2023-12-04 17:36:17 24 4
gpt4 key购买 nike

我正在使用插值在我的 Angular 应用程序上显示一条消息。该消息也包括一个人的名字。我使用@来指定人名。我想要的是我正在显示的任何人的名字都应该是一个超链接。当点击链接时,人会被重定向到个人资料。

最佳答案

你想构建一个管道指令事实证明,操作 DOM 元素更适合指令和组件。

这是我的工作 StackBlitz directive .

正则表达式方法

我得到帮助找到了有效的正则表达式 /@[0-9a-zA-Z]{5,20}(?=\\s|$)/:

// REGEX-MATCH AND REPLACE THE USERNAME SUBSTRING(S)
ngAfterViewInit(){
this.initialText = this.el.nativeElement.innerText;

this.finalText = this.initialText.replace(/@[0-9a-zA-Z]{5,20}(?=\\s|$)/, function(username) {
return `<a href="#${username.substring(1)}">${username}</a>`;
});

循环方式

当循环时,您必须测试每个单词以检查 @xxxxxxx 用户名的多次出现。

  • 获取任意一组文本
  • 在每个空格处拆分每个单词
  • 检查每个单词是否匹配@xx
  • @username 文本引用的词
  • 将@username 实例包装在一个标签中
  • 用finalText替换元素的原始文本
  • 这不检查特殊字符
  • 这不会检查已经包装的@usernames

这两个版本都在 StackBlitz 中,使用 innerHTML 替换。

ngAfterViewInit(){
this.initialText = this.el.nativeElement.innerText;
if (this.initialText && this.initialText.length > 0) {
for (let text of this.initialText.split(" ")) {
if (text.startsWith("@") && text.length > 1){
this.finalText += `<a href="#${text.substring(1)}">${text}</a> `;
} else {
this.finalText += text + " ";
}
}
}
}

关于angular - 我如何将单个单词显示为 Angular 完整消息的超链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56563360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com