Выбор matcheckbox вне флажка, как мы можем остановить запуск события вне флажка - PullRequest
0 голосов
/ 16 апреля 2020

Я использую matcheckbox в таблице приложения, где он также проверяет за пределами флажка. Кто-нибудь может дать решение, как решить эту проблему, а также почему он выбирает, даже если мы нажимаем за пределами флажка. Спасибо заранее html

  <ng-container matColumnDef="select">
          <mat-header-cell *matHeaderCellDef>
            <mat-checkbox (change)="$event ? masterToggle() : null"
                          [checked]="selection.hasValue() && isAllSelected()"
                          [indeterminate]="selection.hasValue() && !isAllSelected()"
                          [aria-label]="checkboxLabel()">
            </mat-checkbox>
         </mat-header-cell>
          <mat-cell *matCellDef="let row">
            <mat-checkbox (click)="$event.stopPropagation()"
                          (change)="$event ? selection.toggle(row) : null"
                          [checked]="selection.isSelected(row)"
                          [aria-label]="checkboxLabel(row)">
            </mat-checkbox>
          </mat-cell>
        </ng-container>
```
ts
```
 /** Whether the number of selected elements matches the total number of rows. */
  isAllSelected() {
    const numSelected = this.selection.selected.length;
    const numRows = this.dataSource.data.length;
    return numSelected === numRows;
  }

  /** Selects all rows if they are not all selected; otherwise clear selection. */
  masterToggle() {
    this.isAllSelected() ?
        this.selection.clear() :
        this.dataSource.data.forEach(row => this.selection.select(row));
  }

  /** The label for the checkbox on the passed row */
  checkboxLabel(row?: Material): string {
    if (!row) {
      return `${this.isAllSelected() ? 'select' : 'deselect'} all`;
    }
    return `${this.selection.isSelected(row) ? 'deselect' : 'select'} row ${row.id + 1}`;
  }

1 Ответ

1 голос
/ 16 апреля 2020

Внизу шаблона вашей таблицы Html посмотрите, есть ли у вас этот кусок кода

<tr mat-row *matRowDef="let row; columns: displayedColumns;"
      (click)="selection.toggle(row)">

Если да, то снимите (click)="selection.toggle(row)", чтобы установить флажок, даже если вы нажмете на всю строку в любом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...