使用复选框进行多项选择 [PrimeNG]

Multiple selection using checkboxes [PrimeNG]

我需要有关“多选(单击 + shift)”的帮助,我不明白如何让它在复选框上起作用。

在文档中有一个示例“复选框选择”并注意 “通过将列的 selectionMode 属性 启用为“多个”,也可以使用复选框处理多项选择。

以及来自文档的示例:

<p-table [value]="products" [(selection)]="selectedProducts3" dataKey="code" responsiveLayout="scroll">
    <ng-template pTemplate="header">
        <tr>
            <th style="width: 3rem">
                <p-tableHeaderCheckbox></p-tableHeaderCheckbox>
            </th>
            <th>Code</th>
            <th>Name</th>
            <th>Category</th>
            <th>Quantity</th>
        </tr>
    </ng-template>
    <ng-template pTemplate="body" let-product>
        <tr>
            <td>
                <p-tableCheckbox [value]="product"></p-tableCheckbox>
            </td>
            <td>{{product.code}}</td>
            <td>{{product.name}}</td>
            <td>{{product.category}}</td>
            <td>{{product.quantity}}</td>
        </tr>
    </ng-template>
</p-table>

但是当我尝试添加这个 属性 'selectionMode' 它仍然不起作用。

我的新例子:

<p-table [value]="products" [(selection)]="selectedProducts3" dataKey="code" responsiveLayout="scroll"
         selectionMode="multiple"> // <--------- Added line with selectionMode property
<ng-template pTemplate="header">
    <tr>
        <th style="width: 3rem">
            <p-tableHeaderCheckbox></p-tableHeaderCheckbox>
        </th>
        <th>Code</th>
        <th>Name</th>
        <th>Category</th>
        <th>Quantity</th>
    </tr>
</ng-template>
<ng-template pTemplate="body" let-product>
    <tr>
        <td>
            <p-tableCheckbox [value]="product"></p-tableCheckbox>
        </td>
        <td>{{product.code}}</td>
        <td>{{product.name}}</td>
        <td>{{product.category}}</td>
        <td>{{product.quantity}}</td>
    </tr>
</ng-template>

我认为有一些愚蠢的错误,但我是 PrimeNG 的新手,所以会非常感谢任何帮助。

这里有 demo.

您必须将 metaKeySelection 属性 设置为 true 才能使用 (click + shift)
启用多选 要使行可选择,请使用 pSelectableRowpSelectableRowIndex 属性。

修改后的代码如下:

<p-table
    [value]="products"
    [(selection)]="selectedProducts3"
    dataKey="code"
    selectionMode="multiple"
    [metaKeySelection]="true"
  >
    <ng-template pTemplate="header">
      <tr>
        <th style="width: 3rem">
          <p-tableHeaderCheckbox></p-tableHeaderCheckbox>
        </th>
        <th>Code</th>
        <!-- others -->
      </tr>
    </ng-template>
    <ng-template pTemplate="body" let-product let-rowIndex="rowIndex">
      <tr [pSelectableRow]="product" [pSelectableRowIndex]="rowIndex">
        <td>
          <p-tableCheckbox
            [value]="product"
          ></p-tableCheckbox>
        </td>
        <td>{{ product.code }}</td>
        <!-- others -->
      </tr>
    </ng-template>
</p-table>