假设我们进行 API 调用并在 String 中获取一些 HTML DOM。内容以不带角度的 HTML 形式出现,因此我必须首先将其转换为我想要的 Angular,然后将其编译为 Angular。
示例 API 响应:
<div>
...some more html...
<h1>a header</h1>
...some more html...
<a href="somewhere.com" class="a-class" id="a-id">A Link</a>
...some more html...
</div>
我正在对其进行转换以获取所有 Anchors<a href="x"></a>
并将它们转换为具有输入和输出的角度组件,这些组件将被注入父容器并一起解析,例如:
<angular-anchor
[href]="somewhere.com"
[innerClass]="thisClasses"
[innerID]="thisID"
[content]="thisContent">
</angular-anchor>
angular-anchor
包含一个 click 方法,该方法从这些组件外部但在 angular 内部(来自服务)执行代码。
通过[innerHTML]
在父容器中使用,其中转换是由管道完成的,就像:
<parent [innerHTML]="APIResponseHTML | transformAnchorsPipe"></parent>
内部的 Angular 组件不会被加载,整个工作只是由管道转换中包含的 safeHTML 解析的原始 Angular。
为了解决这个问题,我使用了 ng-dynamic 库,但它已经过时并且与 AOT 编译不兼容。尽管如此,我还是设法将它与 JIT 编译一起使用,但这对生产不利,效率也低得多。
这种方法的示例,“parentDIV”是一个标准的 HTML 标记:
<parentDIV *dynamicComponent="APIResponseHTML | transformAnchorsPipe;
context: {dependency: dependencyName};">
</parentDIV>
context包含新组件内部所需的所有依赖项,例如我在“angular-anchor”中使用的第三个服务
从这一点开始,我阅读了几篇关于Angular Elements或Dynamic Components Injector的文档,但我无法在我的应用程序中使用它。
使用我刚才提到的这些方法或任何其他方法来使用 AOT 提供的自定义角度组件有什么好的方法吗?
提前致谢。如果需要,请向我询问更多详细信息。