我想在标签内加载一个组件,该标签也使用 innerHTML 指令

I want to load a component inside of a tag which also uses the innerHTML directive

我正在尝试使用 innerHTML 指令以及尝试将组件加载到同一标记中。

一个例子:

<ul *ngFor="let item of array">
    <li [innerHTML]="item.listItemHtml">
        <app-some-component [someInput]='item.componentInput'><app-some-component>
    </li>
</ul>

所以最终结果应该是这样的:

<ul>
    <li>
        <span>list item 1</span>
        <span>component input text 1</span>
    </li>
    <li>
        <span>list item 2</span>
        <span>component input text 2</span>
    </li>
</ul>

我对 angular 还是比较陌生,所以我想掌握一些窍门。如果有人能给我一些关于我如何能够实现这一目标的见解……那就太好了。

如果您还绑定了 innerHTML 属性,则不能在父元素中包含该组件。该元素将仅包含由 innerHTML 绑定设置的 HTML。

您可以通过设置子元素(组件的兄弟)的 outerHTML 属性 来实现您想要的效果。它可以是 divspan 或其他类型的元素;它将被绑定的 HTML 内容替换。

<ul *ngFor="let item of array">
  <li>
    <div [outerHTML]="item.listItemHtml"></div>
    <app-some-component [someInput]='item.componentInput'><app-some-component>
  </li>
</ul>

有关演示,请参阅 this stackblitz