import { Injectable } from "@angular/core"; import { MatCheckboxChange } from "@angular/material/checkbox"; import { TableColumn } from "../../models"; @Injectable() export class TableColumnSelectService { constructor() {} getSelectedColumnsObject(displayedColumns: TableColumn[], visibleColumnsMenu: TableColumn[]): Object { let selectedColumnsObject: Object = visibleColumnsMenu.reduce((r, s) => { r[s.prop] = displayedColumns.some(x => x.prop === s.prop); return r; }, Object.create(null)); return selectedColumnsObject; } toggleColumn(displayedColumns: TableColumn[], column: TableColumn, event: MatCheckboxChange): TableColumn[] { if (event.checked) { displayedColumns = [...displayedColumns, column]; } else { displayedColumns = displayedColumns.filter(x => x.prop !== column.prop); } return displayedColumns; } }