检查角度更改事件

时间:2018-03-16 23:24:35

标签: angular angular-material2

从Angular Material 2 Table上的示例中,在调用处理程序之前,对$event进行了空检查。在这种情况下它检查什么?我似乎找不到任何文件,表明mat-checkbox何时会向null事件发出(change)

https://material.angular.io/components/checkbox/api https://material.angular.io/components/table/overview



<mat-header-cell *matHeaderCellDef>
  <mat-checkbox (change)="$event ? masterToggle() : null"
                [checked]="selection.hasValue() && isAllSelected()"
                [indeterminate]="selection.hasValue() && !isAllSelected()">
  </mat-checkbox>
</mat-header-cell>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

我也不明白他们为什么会这样做。也许你应该记录一下他们的文档问题。

透过their source,它永远不会发出假值。

private _emitChangeEvent() {
    let event = new MatCheckboxChange();
    event.source = this;
    event.checked = this.checked;

    this._controlValueAccessorChangeFn(this.checked);
    this.change.emit(event);
}

此外,在同一个例子中,他们还有另一个复选框,他们不会这样做。

<ng-container matColumnDef="select">
    <mat-header-cell *matHeaderCellDef>
        <mat-checkbox (change)="$event ? masterToggle() : null"
              [checked]="selection.hasValue() && isAllSelected()"
              [indeterminate]="selection.hasValue() && !isAllSelected()">
        </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)">
        </mat-checkbox>
    </mat-cell>
</ng-container>