Выбор нескольких строк с ключом данных

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

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

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

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

person snso    schedule 11.07.2019    source источник
comment
это не ошибка. это работает. выложи свой тс код   -  person devpato    schedule 12.07.2019
comment
также опубликуйте вывод ваших данных   -  person devpato    schedule 12.07.2019


Ответы (1)


вам может потребоваться обновить массив выбора после каждого выбора новой строки, чтобы проверить 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)
  }

демонстрация ????????

person malbarmavi    schedule 12.07.2019