【发布时间】:2021-01-10 15:31:24
【问题描述】:
我有一个 Angular 组件,“app-xml-content”。
在 app-xml-content 中,我从外部源加载了一些 XML。然后我想突出显示该 XML 的某些部分,并添加一个包含一些有用信息的工具提示。
我做到了如下:
<div id="xml-content" [innerHTML]="xmlString | customHighlight: criteria"></div>
我的 customHighlight 管道将搜索 XML,目前只是进行 RegEx 替换:
const highlighter = (match) => `<mark class="highlight${diff.intensity}">${match}</mark>`;
if (diff.intensity) {
modifiedContent = modifiedContent.replace(new RegExp(pattern, 'gi'), highlighter);
}
但我更希望荧光笔用自定义 Angular 组件替换匹配项,而不是 HTML <mark />。例如
const highlighter = (match) => `<app-highlight intensity="${diff.intensity}" content="${match}"></app-highlight>`;
if (diff.intensity) {
modifiedContent = modifiedContent.replace(new RegExp(pattern, 'gi'), highlighter);
}
当我这样做时,突出显示的部分根本不会呈现。
我可以看到<app-highlight /> 的构造函数没有被调用。
我进行了调查,发现了ComponentFactoryResolver,但我真的不明白如何使用它来仅呈现被替换的 XML 位。我可以使用管道中的解析器将其解析为 AppHighlightComponent 吗?
如果有人可以向我展示一个我可以使用的模式来帮助我解决这个问题,我将不胜感激。
谢谢。
【问题讨论】:
标签: javascript angular innerhtml