Довольно немного кода должно быть упрощено в вашем примере. После рефакторинга класса TableSelectionExample у меня закончились следующие соответствующие методы:
isAllSelected() {
const numSelected = this.selection.selected.length;
const numRows = this.dataSource.length;
return numSelected === numRows;
}
toggleSelectionAll(): void {
this.isAllSelected() ?
this.selection.clear() :
this.dataSource.forEach(row => this.selection.select(row));
this.computeTotal();
}
toggleSelection(row: element): void {
this.selection.toggle(row);
this.computeTotal();
}
computeTotal(): void {
this.totalCal = this.dataSource
.filter(e => this.selection.isSelected(e))
.map(e => e.prixElement)
.reduce((a, b) => a + b, 0);
}
Следовательно, мне также пришлось изменить шаблон.
Пожалуйста, ознакомьтесь с исправленным StackBlitz .