我正在尝试将对象转换为纯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
定义结束标记。
请帮助
答案 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;
}