【问题标题】:Display other content along with innerHTML与 innerHTML 一起显示其他内容
【发布时间】:2023-01-26 03:49:56
【问题描述】:

我有一个组件,它根据传递的数据呈现标签,如下所示:

<ng-container>
<ng-container [ngSwitch]="tag">
    <p    *ngSwitchCase="'p'"  [innerHTML]="_getString()"></p>
    <h1   *ngSwitchCase="'h1'" [innerHTML]="_getString()"></h1>
    <h2   *ngSwitchCase="'h2'" [innerHTML]="_getString()"></h2>
    <h3   *ngSwitchCase="'h3'" [innerHTML]="_getString()"></h3>
    <h4   *ngSwitchCase="'h4'" [innerHTML]="_getString()"></h4>
    <span *ngSwitchCase="'span'" [innerHTML]="_getString()"></span>
    <code *ngSwitchCase="'code'" [innerHTML]="_getString()"></code>
    <time *ngSwitchCase="'time'" [innerHTML]="_getString()"></time>
</ng-container>

我想在需要时在每个文本旁边呈现一个图标。

<span *ngIf="icon" class="css-{{icon}}" role="presentation"></span>

如果我将图标标签放在每个标签之间,它就会被 innerHTML 数据替换。

有什么方法可以同时呈现图标(使用 ng-content 或类似的东西,因为我不想在每个元素中写图标 html)和 innerHTML 数据?

我是 Angular 世界的新手,所以想学习。任何帮助,将不胜感激。

谢谢你。

【问题讨论】:

    标签: javascript html angular


    【解决方案1】:

    看来您的问题不是针对 Angular 的,而是针对 JavaScript 行为的。

    innerHTML 获取或设置元素中包含的 HTML 或 XML 标记。所以这意味着它取代了开始时的任何内容。 (https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML)

    我认为您可以尝试改用 insertAdjacentHTML() - 这应该将 HTML 添加到 DOM 中已经存在的元素中。 在此处检查语法和示例:https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML

    【讨论】:

    • 感谢您的回复,但我正在 Angular 世界中寻找解决方案,不想编写 javascript 代码来附加元素。
    【解决方案2】:

    尝试将包裹在 span 标签中的图标传递给 _getString() 方法。配置您的方法,使其返回图标和文本

    例如 获取字符串(图标){ 返回&lt;span&gt; ${icon} &lt;/span&gt; your string here }

    在这种情况下,每次调用 _getString 时都会传递所需的图标

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-14
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-07
      相关资源
      最近更新 更多