Primeng表组件不适用于ngFor

时间:2018-02-06 16:25:42

标签: angular typescript datatable primeng

我正在尝试循环数组,此数组中的每个对象都是html上的表。 它显示如下:

<p-table [value]="section" *ngFor="let section of sections">
  <ng-template pTemplate="header">
          <tr>
              <th>Quantity</th>
              <th>Length</th>
              <th>m^2</th>
              <th></th>
          </tr>
          <tr>
              <th colspan="4">
                  <div (click)="showDialog()" class="text-left">+ A - Flat Panel RAW MDF Red Gloss
                      - $95 / sqm
                  </div>
              </th>
              <th colspan="8">
                  <div class="md-inputfield">
                      <input type="text" class="form-control" pInputText>
                  </div>
              </th>
          </tr>
      </ng-template>
      <ng-template pTemplate="body" let-rowData *ngFor="let piece of rowData.Pieces">
          <tr>
              <td>
                  <p-spinner [(ngModel)]="rowData.Quantity"></p-spinner>
              </td>
              <td pEditableColumn>
                  <p-cellEditor>
                      <ng-template pTemplate="input">
                          <input type="text" [(ngModel)]="rowData.Length">
                      </ng-template>
                      <ng-template pTemplate="output">
                          {{rowData.Length}}
                      </ng-template>
                  </p-cellEditor>
              </td>
              <td>
                  {{CalculateTotalArea(rowData)}}
              </td>
              <td>
                  <button pButton type="button" icon="fa-close"></button>
              </td>
          </tr>
      </ng-template>
</p-table>

但是这给了我一个错误this.value.sort is not a function,这里是数组

this.pieces = [{ Quantity: 2, Length: 3, Width: 3, Thickness: 4 }]

this.sections = [ { Pieces: this.pieces, text: "abc" } ]

我正在尝试将代码推送到Plunker但我不知道如何将primeng版本升级到"primeng": "^5.2.0-rc.1",然后Plunker现在不工作 任何人都帮我更新primeng库并建议我如何解决这个bug。 这是链接Plunker:Plunker

1 个答案:

答案 0 :(得分:0)

这是因为,p-table期望一个数组通过value,但是你要传递 导致错误的{ Pieces: this.pieces, text: "abc" }。您必须删除*ngFor="let section of sections"并像这样传递您的数组 <p-table [value]="sections">或者如果你真的想要在你的页面中拥有大量的表格,那么你的sections数组应该像下面的那样(多维):

// for the sake of simplicity, I named your objects as 'item'
this.sections = [
    [item1, item2, item3],
    [item10, item11, item12],
    [item15, item50, item32]
]