0

我正在构建一个内容系统,我希望用户能够在其中创建带有文本块的帖子。如果他们使用“#”符号,我会将其添加到我的数据库中。然后在我的前端,当访客到来时,我会显示文本。

我希望能够解析出所有 # 并将它们传递给 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。

有任何想法吗?

*更新

因此,在多次撞墙之后,我决定我目前的方法是最好的情况(等待更好的解决方案)。

  1. 得到字符串。
  2. 将字符串 #* 替换为
  3. 使用innerHtml

我是根据我检查过的一条随机推文的截图来做这个的。

带有 # 的推文截图

任何更好的想法,我都在听。

4

0 回答 0