动态添加锚标签

时间:2019-02-18 11:45:51

标签: angular

我正在尝试将对象转换为纯html字符串,

我可以成功地将对象转换为html,但是在转换锚标记方面遇到了挑战。

下面是锚点链接的对象,

"inlineEntityRanges":[
   {
      "type":"LINK",
      "offset":83,
      "length":16,
      "data":{
         "target":"_self",
         "url":"/index.htm"
      }
   }
]

我创建了一个stack-blitz项目。在此项目中,customer support文本应为锚链接。

https://stackblitz.com/edit/angular-9xqft3?file=src%2Fapp%2Fapp.component.ts

offset定义链接何时开始,而length定义结束标记。

请帮助

1 个答案:

答案 0 :(得分:0)

像这样? (使用您的堆叠闪电战)

private generateHtml(elem: any): string {
  let result ="";
  let inline="";
  result =this.getGenerateHtml(elem);
  if(elem.inlineEntityRanges){
    for(let data of elem.inlineEntityRanges){
      inline =this.getGenerateHtml(data);
         if(inline){
          let text = this.getText(data.offset,data.length,result);
          inline= inline.replace('stringToReplace', text);
          result=result.replace(text,inline);
          }
       }
     }

 return result;
}

getText(offset,length,text:string){
      return text.substr(offset,length);
}

getGenerateHtml(elem: any): string{
   let result ="";
   switch (elem.type) {
   case 'heading-1': result= `<h1>${elem.text.trim()}</h1>`; break;
   case 'paragraph': result = `<p>${elem.text.replace(/\n/g, "<br />").trim()}</p>`; break;
   case 'LINK': result= `<a href='${elem.data.url.trim()}' target=${elem.data.target.trim()}' >stringToReplace</a>`;break;
    }
  return result;
 }