我正在构建一个内容系统,我希望用户能够在其中创建带有文本块的帖子。如果他们使用“#”符号,我会将其添加到我的数据库中。然后在我的前端,当访客到来时,我会显示文本。
我希望能够解析出所有 # 并将它们传递给 routeLink 以搜索具有匹配 # 的所有帖子。
除了一个例外,这一切都有效。当我将文本传递给用户时:
LinkAllHashes(t: string){
this.bodyText = t.replace(/(^|\s)(#[a-zA-Z\d][\w-]*)/ig, "$1<span (click)='SearchAllHashes($2)' class='hash_tag'>$2</span>");
一切正常,但它忽略了(点击)事件。我一直在到处阅读,看来我无法在运行时在 innerHtml 中附加函数。是这样吗?我怎样才能解决这个问题?
如果我只是这样做:
PipeAllHashes(t: string){
this.comcom = t.replace(/(^|\s)(#[a-zA-Z\d][\w-]*)/ig, "$1<a href='search-results/$2)' class='hash_tag'>$2</a>");
它可以工作,但随后会重新加载页面,这对用户体验来说很糟糕。这就是为什么我需要使用 routeLink。
有任何想法吗?
*更新
因此,在多次撞墙之后,我决定我目前的方法是最好的情况(等待更好的解决方案)。
- 得到字符串。
- 将字符串 #* 替换为
- 使用innerHtml
我是根据我检查过的一条随机推文的截图来做这个的。
任何更好的想法,我都在听。