我正在创建一个提及指令。当用户尝试在 textarea 上插入内容时,我的指令将触发并显示用户列表。保存时,这会将值作为文本返回。
例如:Good morning @alice.Today is @bob 's birthday.
我想像帖子一样显示这个。所以想为特定用户添加超链接。
我的第一次尝试是将提到的用户列表存储在数组中,然后过滤掉,然后动态形成超链接。但这是一个失败,多个用户有问题。
现在我认为最好将文本转换为 Html 并保存为字符串。然后调用[innerHTML]
。
app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
converted: string;
text: string;
constructor() {
this.text = 'Good morning @alice.Today is @bob 's birthday.';
this.converted = this.textToHtml(this.text);
}
textToHtml(text: string) {
return text.replace(/@([a-z\d_]+)/ig, `<a href="http://localhost:4200/profile/$1">$1</a>`);
}
}
我有一个与用户相关的个人资料编号的对象
let userList = {
'alice':100,
'bob': 101
}
如何修改正则表达式并将带有超链接点的名称返回到配置文件?
例如:
<a [routerLink]="['/profile', ${userId of user}]">${name}</a>