从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;
答案 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>