Выбор нескольких строк с помощью datakey - PullRequest
0 голосов
/ 12 июля 2019

Я работаю над проектом, который использовал PrimeNg в качестве библиотеки пользовательского интерфейса.Работая с таблицей, я обнаружил, что свойство datakey не выделяет все связанные строки.Когда я консольный журнал массив выбора, он показывает, что был выбран только 1Но пользовательский интерфейс выбирает все связанные строки.

Например, у меня есть таблица, содержащая строку с несколькими отслеживающими номерами.У каждой строки может быть одно и то же отслеживание.Когда я выбираю одну из строк, она должна выбрать все связанные строки с одинаковым номером отслеживания.

Я что-то упустил?Или это ошибка?

    <p-table 
                     [(selection)]="selectedRows"
                     [columns]="cols"
                     [dataKey]="'trackingNo'"
                     [selectionMode]="'multiple'"
                     [lazy]="false"
                     [rows]="20"
                     [value]="values$ | async">

1 Ответ

1 голос
/ 12 июля 2019

вам может понадобиться обновлять массив выбора после каждого выбора новой строки, чтобы проверить trackingNo

пример этой базы автомобилей по годам, где я выбираю каждую базу автомобилей текущего года выбора автомобиля

<p-table [columns]="columns"  [value]="carsData" selectionMode="multiple"
              [(selection)]="selectedCars" (onRowSelect)="onRowSelect($event)">
    <ng-template pTemplate="header" let-columns>
        <tr>
            <th *ngFor="let col of columns">
                {{col.header}}
            </th>
        </tr>
    </ng-template>
    <ng-template pTemplate="body" let-rowData let-columns="columns" let-index="rowIndex">
        <tr [pSelectableRow]="rowData" [pSelectableRowIndex]="rowIndex">
            <td *ngFor="let col of columns" class="ui-resizable-column">
                {{rowData[col.field]}}
            </td>
        </tr>
    </ng-template>
</p-table>

компонент

onRowSelect(event) {
    const selectedCar = event.data;
    setTimeout(() => {
      this.selectedCars = cars.filter(car => car.year == selectedCar.year);
    }, 0)
  }

демо ??

...