import { Component, inject, OnInit, ViewChild } from '@angular/core'; import { MatIconModule } from '@angular/material/icon'; import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator'; import { MatSort, MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { ActivatedRoute, RouterModule } from '@angular/router'; import { Role } from '../role'; import { RoleListDatasource } from './role-list-datasource'; @Component({ selector: 'app-role-list', templateUrl: './role-list.component.html', styleUrls: ['./role-list.component.css'], imports: [RouterModule, MatIconModule, MatTableModule, MatSortModule, MatPaginatorModule], }) export class RoleListComponent implements OnInit { private route = inject(ActivatedRoute); @ViewChild(MatPaginator, { static: true }) paginator!: MatPaginator; @ViewChild(MatSort, { static: true }) sort!: MatSort; list: Role[] = []; dataSource: RoleListDatasource = new RoleListDatasource(this.list, this.paginator, this.sort); /** Columns displayed in the table. Columns IDs can be added, removed, or reordered. */ displayedColumns = ['name', 'permissions']; ngOnInit() { this.route.data.subscribe((value) => { const data = value as { list: Role[] }; this.list = data.list; }); this.dataSource = new RoleListDatasource(this.list, this.paginator, this.sort); } }