Как решить проблему с множественным выбором для списка флажков? - PullRequest
0 голосов
/ 05 мая 2020

Я новичок в angular и пытаюсь получить данные из таблицы с помощью флажков, но это работает только тогда, когда я нажимаю заголовок «Выбрать все». Если я хочу выделить их вручную, это не сработает. Это мой код. html для моего столбца селектора.

<ng-container matColumnDef="select">


<th mat-header-cell *matHeaderCellDef> Select all
  <mat-checkbox (change)="$event ? masterToggle() : null"
                [checked]="selection.hasValue() && isAllSelected() "
                [indeterminate]="selection.hasValue() && !isAllSelected()"                  
                [aria-label]="checkboxLabel()">
  </mat-checkbox>
</th>    
<td mat-cell *matCellDef="let row">
  <mat-checkbox (click)="$event.stopPropagation() "
                (change)="$event ? selection.toggle(row) : null"
                [checked]="selection.isSelected(row) "
                [aria-label]="checkboxLabel()"> 
  </mat-checkbox>
</td>

И это мой файл .ts

      isAllSelected() {
    const numSelected = this.selection.selected.length;
    const numRows = this.projectEntity.images.length;
    return numSelected === numRows;
  }

  masterToggle() {
    this.isAllSelected() ?
        this.selection.clear() :
        this.projectEntity.images.forEach(row => this.selection.select(row));
        //console.log(this.imagesPlusChecked)
        console.log(this.selection.selected)
  }

  checkboxLabel(row?: any): string {
    if (!row) {
      return `${this.isAllSelected() ? 'select' : 'deselect'} all`;
    }
    return `${this.selection.isSelected(row) ? 'deselect' : 'select'} row ${row.position + 1}`;
  }

В this.selection.selected должны появиться все мои выбранные данные. Большое спасибо и извините, если проблема уже решена, но я ничего не нашел.

...