ngДля создания 2 строк

Использование Angular 2 ngFor Я создаю таблицу.

Моя проблема заключается в том, что my data array содержит такие elements, что каждый элемент должен создавать две последовательные строки в таблице (с использованием разных полей, вторая строка сворачивается с большим количеством данных)

<tbody>
    <tr *ngFor="let element of data; let i = index">
       <th>...<th>
       ...
       <td>...<td>
    </tr>
</tbody>

Проблема в том, что tbody не допускает атрибута рядом с <tr>.

Я ищу что-то вроде

<tbody>
   <template *ngFor="let element of data; let i = index">
       <tr>...</tr> //row 1
       <tr>...</tr> //row 2
   </template>
</tbody>

Ответы

Ответ 1

Это существует с немного отличающимся синтаксисом:

<template ngFor let-element [ngForOf]="data" let-i="index">
   <tr>...</tr> //row 1
   <tr>...</tr> //row 2
</template>

или же

<ng-container *ngFor="let element of data let i=index">
   <tr>...</tr> //row 1
   <tr>...</tr> //row 2
</ng-container>

обновление для> = 4.0.0 <template> было изменено на <ng-template>

<ng-template ngFor let-element [ngForOf]="data" let-i="index">
   <tr>...</tr> //row 1
   <tr>...</tr> //row 2
</ng-template>

Ответ 2

Я столкнулся с той же проблемой, и я не нашел подходящего решения. Но после глубокого исследования я нашел этот ng-контейнер, и он работал очень хорошо. U может видеть это в действии ниже

https://plnkr.co/edit/F8ohXKLHvvbHXAqGESQN?p=preview

 <ng-container *ngFor="let obj of posts">
        <tr>
            <td>
                <button (click)="openCloseRow(obj.id)">
                    <span *ngIf="rowSelected!=obj.id; else close">Open</span>
                      <ng-template #close>
                        <span>Close</span>
                        </ng-template>
                </button>
            </td> 
          <td>{{obj.date}}</td>
          <td>
              {{obj.subject}}
          </td>
          <td>{{obj.numComents}}</td>
        </tr>
        <tr *ngIf="rowSelected==obj.id">
            <td></td>
            <td colspan="4">
                <table class="table table-striped">
                    <thead>
                        <tr>                                   
                            <th style="width:15%;">Comment</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr *ngFor="let q of obj.comments">                                  
                            <td style="width:15%;">{{q}}</td>
                        </tr>
                    </tbody>
                </table>
            </td>
        </tr>
      </ng-container>

Ответ 3

<table>
      <tr>
          <th>ID#</th>
          <th>Name</th>
          <th>Grade</th> 
          <th>Power</th>
      </tr>
      <tr *ngFor="let object_name of object_array">
          <td>{{object_name.id}}</td>
          <td>{{object_name.name}}</td>
          <td>{{object_name.grade}}</td>
          <td>{{object_name.power}}</td>
      </tr>
</table>