angular - 如何根据值创建动态标签
问题描述
我需要创建一个模板,其中将根据变量值动态定义原生 html 标签。
我尝试使用自定义指令,将最初定义的标签替换为请求的新标签,例如此处所述。尽管该解决方案似乎在一定程度上有效,但它破坏了 innerHTML 内容与组件类的变量和事件绑定。换句话说,组件类变量的更改不再对呈现的 html 产生影响。
在 Vue 中有一种非常简单的实现方式:
<component :is="tagName" class="foo" style="color:red">
anything inside component
</component>
tagName = 'p'
例如,这将导致
<p class="foo" style="color:red">
anything inside component
</p>
我想知道是否会有任何类似的角度解决方案。任何帮助都会很棒。
解决方案
为什么不按条件添加指定的元素?
<container-element [ngSwitch]="tagName">
<elementType1 *ngSwitchCase="tagName1">...</elementType1>
<elementType2 *ngSwitchCase="tagName2">...</elementType2>
<elementTypeDefault *ngSwitchDefault>...</elementTypeDefault>
</container-element>
或使用基本的*ngIf
:
<elementType1 *ngIf="tagName1_expression">anything inside component</elementType1>
<elementType2 *ngIf="tagName2_expression">anything inside component</elementType2>
推荐阅读
- jquery - asp.net核心中的xml绑定
- javascript - 如果最小化,Cordova Windows 应用程序脚本不会执行
- html - 不从Angular 7中的本地路径加载图像
- c - Prime 与否 Prime 输出缓慢
- kubernetes - Kubernetes:了解资源请求/限制和调度
- java - Jersey 2 请求过滤器在此代码中不起作用
- autodesk-forge - AutodeskForge 支持哪些文件格式?
- sql - 关键字“AS”预期 ID 附近的语法不正确
- entity-framework - 仅在生产中抛出值不能为空 - EF核心
- ansible - 使用ansible替换xml文件中的一行