我是Angular的新手,我很难弄清楚如何将重复的代码重构为组件,而没有组件插入额外的标签会导致我的CSS和DOM结构出现问题 .

例如,如果我有一个Bootstrap样式的 <dl> 列表:

<dl class="row">
    <dt class="col-sm-4">Obi-Wan</dt>
    <dd class="col-sm-8">hermit</dd>
    <dt class="col-sm-4">Luke</dt>
    <dd class="col-sm-8">farmer</dd>
  </dl>

我想删除重复的样式,我想添加其他功能(如工具提示)而不重复每个标记,所以我创建并使用定义组件:

<dl class="row">
    <app-definition caption="Obi-Wan">hermit</app-definition>
    <app-definition caption="Luke">farmer</app-definition>
  </dl>

但是现在 <app-definition> 在DOM树中获得了自己的节点,因此样式和 <dl> 语义都搞砸了 .

Here's a Plunker证明了这一点 . (对于我的应用程序,一些dt dd节点可能具有不同的属性,并且一些dd节点可能具有更复杂的内容,因此将数据中的所有内容填充然后使用 ngFor 将是不合适的 . )

关于如何重构这个以减少重复而不会导致我的DOM出现问题的任何建议?我习惯于React,其中调用组件可以替换该组件返回的内容,而不是必须插入新标签 .