当前位置: 首页> 教育> 高考 > 企业在线注册_90设计网站终身会员_百度医生在线问诊_手机优化管家

企业在线注册_90设计网站终身会员_百度医生在线问诊_手机优化管家

时间:2025/7/17 1:29:53来源:https://blog.csdn.net/cf8833/article/details/145827353 浏览次数:0次
企业在线注册_90设计网站终身会员_百度医生在线问诊_手机优化管家

说明:
使用angular实现表格,包括数据源,排序,分页
效果图:
在这里插入图片描述

step1:C:\Users\Administrator\WebstormProjects\untitled4\src\app\setting\setting.component.ts

import { Component, ViewChild, AfterViewInit } from '@angular/core';
import { MatTableModule, MatTableDataSource } from '@angular/material/table';
import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
import { MatSort, MatSortModule } from '@angular/material/sort';
import { CommonModule } from '@angular/common';
import { MatInputModule } from '@angular/material/input';
import { MatFormFieldModule } from '@angular/material/form-field';
import {MatIcon} from '@angular/material/icon';export interface UserData {id: string;name: string;email: string;role: 'Admin' | 'User' | 'Guest';
}@Component({selector: 'app-setting',standalone: true,imports: [CommonModule,MatTableModule,MatPaginatorModule,MatSortModule,MatInputModule,MatFormFieldModule,MatIcon],templateUrl: './setting.component.html',styleUrls: ['./setting.component.css']
})
export class SettingComponent implements AfterViewInit {displayedColumns: string[] = ['id', 'name', 'email', 'role'];dataSource: MatTableDataSource<UserData>;@ViewChild(MatPaginator) paginator!: MatPaginator;@ViewChild(MatSort) sort!: MatSort;constructor() {// 生成测试数据const users = Array.from({ length: 100 }, (_, i) => ({id: (i + 1).toString(),name: `User_${i + 1}`,email: `user${i + 1}@demo.com`,role: this.getRole(i)}));this.dataSource = new MatTableDataSource<UserData>(users);}private getRole(index: number): 'Admin' | 'User' | 'Guest' {if (index % 3 === 0) return 'Admin';if (index % 2 === 0) return 'User';return 'Guest';}ngAfterViewInit() {this.dataSource.paginator = this.paginator;this.dataSource.sort = this.sort;}applyFilter(event: Event) {const filterValue = (event.target as HTMLInputElement).value;this.dataSource.filter = filterValue.trim().toLowerCase();if (this.dataSource.paginator) {this.dataSource.paginator.firstPage();}}
}

step2: C:\Users\Administrator\WebstormProjects\untitled4\src\app\setting\setting.component.html

<div class="container"><!-- 搜索框 --><mat-form-field appearance="outline"><mat-label>Filter users</mat-label><inputmatInput(keyup)="applyFilter($event)"placeholder="Search..."data-testid="search-input"><mat-icon matSuffix>search</mat-icon></mat-form-field><!-- 数据表格 --><tablemat-table[dataSource]="dataSource"matSortclass="mat-elevation-z8"><!-- ID列 --><ng-container matColumnDef="id"><th mat-header-cell *matHeaderCellDef mat-sort-header>ID</th><td mat-cell *matCellDef="let user">{{ user.id }}</td></ng-container><!-- 姓名列 --><ng-container matColumnDef="name"><th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th><td mat-cell *matCellDef="let user">{{ user.name }}</td></ng-container><!-- 邮箱列 --><ng-container matColumnDef="email"><th mat-header-cell *matHeaderCellDef mat-sort-header>Email</th><td mat-cell *matCellDef="let user">{{ user.email }}</td></ng-container><!-- 角色列 --><ng-container matColumnDef="role"><th mat-header-cell *matHeaderCellDef mat-sort-header>Role</th><td mat-cell *matCellDef="let user"><span [class]="'role-badge ' + user.role.toLowerCase()">{{ user.role }}</span></td></ng-container><!-- 表头行 --><tr mat-header-row *matHeaderRowDef="displayedColumns"></tr><!-- 数据行 --><trmat-row*matRowDef="let row; columns: displayedColumns"class="row-hover"></tr></table><!-- 分页器 --><mat-paginator[pageSizeOptions]="[5, 10, 20]"showFirstLastButtonsaria-label="Select page of users"></mat-paginator>
</div>

step3: C:\Users\Administrator\WebstormProjects\untitled4\src\app\setting\setting.component.css

.container {padding: 20px;max-width: 1200px;margin: 0 auto;
}mat-form-field {width: 100%;max-width: 400px;margin-bottom: 20px;
}table {width: 100%;margin: 20px 0;
}.role-badge {padding: 4px 8px;border-radius: 12px;font-size: 0.8em;font-weight: 500;
}.role-badge.admin {background-color: #f0f8ff;color: #1e90ff;
}.role-badge.user {background-color: #f0fff0;color: #228b22;
}.role-badge.guest {background-color: #fff8dc;color: #daa520;
}.row-hover:hover {background-color: #f5f5f5;cursor: pointer;
}.mat-elevation-z8 {box-shadow: 0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);
}

end

关键字:企业在线注册_90设计网站终身会员_百度医生在线问诊_手机优化管家

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: