recherche

Maison  >  Questions et réponses  >  le corps du texte

Afficher d'autres contenus et innerHTML simultanément

J'ai un composant qui restitue les étiquettes en fonction des données transmises comme ceci :

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

Je souhaite afficher une icône à côté de chaque texte en cas de besoin.

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

Si je mets la balise icon entre chaque balise, elle est remplacée par les données innerHTML.

Existe-t-il un moyen de restituer l'icône (en utilisant ng-content ou quelque chose de similaire, car je ne veux pas écrire l'icône en HTML dans chaque élément) et les données innerHTML ?

Je suis nouveau dans le monde angulaire, donc j'essaie d'apprendre. Toute aide serait grandement appréciée.

Merci.

P粉727531237P粉727531237304 Il y a quelques jours396

répondre à tous(1)je répondrai

  • P粉731977554

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

    Il semble que votre problème ne soit pas spécifique à Angular, mais au comportement de JavaScript.

    innerHTML Obtient ou définit la balise HTML ou XML contenue dans l'élément. Cela signifie donc qu’il remplace tout ce qui existait en premier lieu. (https://developer.mozilla.org/en-US /docs/Web/API/Element/innerHTML)

    Je pense que vous pourriez essayer d'utiliser insertAdjacentHTML() à la place - cela devrait ajouter du HTML à un élément qui est déjà dans le DOM. Vérifiez la syntaxe et les exemples ici : https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML

    répondre
    0
  • Annulerrépondre