suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Zeigen Sie andere Inhalte und innerHTML gleichzeitig an

Ich habe eine Komponente, die Beschriftungen basierend auf übergebenen Daten wie folgt rendert:

<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>

Ich möchte bei Bedarf neben jedem Text ein Symbol rendern.

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

Wenn ich das Symbol-Tag zwischen jedem Tag einfüge, wird es durch die innerHTML-Daten ersetzt.

Gibt es eine Möglichkeit, das Symbol (mit ng-content oder etwas Ähnlichem, da ich das Symbol-HTML nicht in jedes Element schreiben möchte) und die innerHTML-Daten zu rendern?

Ich bin neu in der Angular-Welt und versuche es zu lernen. Jede Hilfe wäre sehr dankbar.

Vielen Dank.

P粉727531237P粉727531237276 Tage vor374

Antworte allen(1)Ich werde antworten

  • P粉731977554

    P粉7319775542024-03-23 09:55:28

    看来您的问题并不是特定于 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

    Antwort
    0
  • StornierenAntwort