Angular:每个 tr 元素内有两行的 HTML 表

Posted

技术标签:

【中文标题】Angular:每个 tr 元素内有两行的 HTML 表【英文标题】:Angular: HTML table with two rows inside each tr element 【发布时间】:2021-09-11 20:50:19 【问题描述】:

显然这里已经回答了这个问题:Generating Two Table Rows With *ngFor

我正在尝试实现一个 html 表格,其 tr 元素每个都有两个可用行。我正在将它与使用 Angular 框架和引导程序的应用程序集成。我想避免嵌套表格,因为它们真的很乱。

我想这样做的原因是,我可以将所有字段放在第一行,然后第二行显示为空,但会在适当的时候填充成功/错误消息。

<!-- Example code -->
<table>
  <thead>
    <th>Field 1</th>
    <th>Field 2</th>
    <th>Field 3</th>
  </thead>
  <tbody>
    <tr *ngFor="row in rows">
      <td>...</td>
      <td>...</td>
      <td>...</td>
    </tr>
  </tbody>
</table>

每个tr 看起来像这样:

[Field 1] [Field 2] [Field 3]

我想要实现的是每个tr 看起来像这样:

[Field 1] [Field 2] [Field 3]
[ - second row inside tr -- ]

编辑: 包括我希望实现的图表

【问题讨论】:

【参考方案1】:

也许你可以这样做:

<table border="2">
  <caption> Demo table</caption>
  <thead>
    <th>Field 1</th>
    <th>Field 2</th>
    <th>Field 3</th>
  </thead>
  <tbody>
    <tr>
      <thead>
        <th>Field 1</th>
        <th>Field 2</th>
        <th>Field 3</th>
      </thead>
  <tbody>
    <tr>
      <td colspan="3"> -- second row inside tr -- </td>
    </tr>
  </tbody>
  </tr>
  <tr>
    <thead>
      <th>Field 1</th>
      <th>Field 2</th>
      <th>Field 3</th>
    </thead>
    <tbody>
      <tr>
        <td colspan="3"> -- second row inside tr -- </td>
      </tr>
    </tbody>
  </tr>
  </tbody>
</table>

【讨论】:

你不用加那么多&lt;th&gt;。在 CSS 中访问时可能会产生误导,因为表格应该只有一个 &lt;th&gt; 理想情况下 @anirudh 表行内不同的表,不同的表具有不同的表头。那是我的推理。用户可以根据自己的需要进行更改。 这似乎有点多余。看看我的答案一次 感谢@SuryanshSingh 的回复!不幸的是,这确实使用了嵌套表(有点),这是我希望避免的。特别是如果rows 包含三个以上的元素,您可以立即看到代码将如何混乱。 @MariosYiannakou 我对角度一无所知,但我一直在寻找这个问题我遇到了这个答案,他们在哪里模拟 css 中的 colspan:***.com/a/3109087/15387341【参考方案2】:

您可以将colspan="3" 用于&lt;td&gt; 作为潜台词,如下所示-

代码

 table, th, td 
      border: 1px solid black;
      border-collapse: collapse;
 

 
 #subtext 
 text-align:center;
 
  <table>
      <thead>
        <th>Field 1</th>
        <th>Field 2</th>
        <th>Field 3</th>
      </thead>
      <tbody>
        <tr>
          <td>Name1</td>
          <td>Name2</td>
          <td>Name3</td>
        </tr>
        <tr id="subtext">
          <td colspan="3"> Subtext </td>
        </tr>
        <tr>
          <td>Name4</td>
          <td>Name5</td>
          <td>Name6</td>
        </tr>
        <tr id="subtext">
          <td colspan="3"> Subtext </td>
        </tr>
      </tbody>
    </table>

您可以使用 CSS 来加粗该子文本和一行

【讨论】:

是的,这似乎比我正在寻找的要多得多......不过看看你的代码,这在 Angular 框架中是如何实现的? *ngFor 会转到第一个 &lt;tr&gt;,然后呢?第二个&lt;tr&gt; 包含跨越三列的&lt;td&gt; 将需要一个单独的*ngFor,并且不会按照我的意思结束。除非我将它们都封装在 &lt;div&gt; 中……但这听起来很奇怪。 如果这个答案可以帮助您将其标记为对未来的开发人员是正确的。如果有任何进一步的疑问,请告诉我,我很乐意为您提供帮助:) 仅限于 HTML 和 CSS 是什么意思?我在原始问题中包含了我在角度框架中使用它的问题?但这是我用来希望以我的最终答案为基础的内容,因为这是非常好的信息。 对不起,我猜您没有将您的问题标记为 angular,这造成了混乱。其实老实说,我对角度没有太多的想法。对此感到抱歉 完全没问题!并不是说你的答案无关紧要。

以上是关于Angular:每个 tr 元素内有两行的 HTML 表的主要内容,如果未能解决你的问题,请参考以下文章

Camelot-py 没有检测到有两行的表

CSS表格 单元格占两行

Angular.js ng-repeat 跨越多个 tr

Angular Material mat 表合并的行

检查mysql中的表中是不是有两行具有相同的元素

在循环中呈现 2 个 tr 元素的 Angular2 组件