我有一个组件,它根据传递的数据呈现标签,如下所示:
<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 世界的新手,所以正在努力学习。任何帮助将不胜感激。
谢谢。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
看来您的问题并不是特定于 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