我mat-table
在我的 Angular 5 项目中使用过。该表由各种数据和删除选项组成。当数据被删除时,除非重新加载页面,否则它不会从表中消失。我曾splice
在另一个数据表中使用过一个包,它工作得很好,但mat-table
同样做不到。
我的桌子的看法:
<h5>User List </h5>
<div class="example-container mat-elevation-z8">
<div class="example-header">
<mat-form-field>
<input matInput (keyup)="applyFilter($event.target.value)" matInput placeholder="Filter">
</mat-form-field>
</div>
<mat-table #table [dataSource]="dataSource" matSort>
<ng-container matColumnDef="id">
<mat-header-cell *matHeaderCellDef mat-sort-header> User ID</mat-header-cell>
<mat-cell *matCellDef="let item">
{{item.id}}
<span (click)="editUserData(item)"> edit </span>
<span (click)="viewUserData(item)"> view </span>
<span (click)="confirmDelete(item)"> delete </span>
</mat-cell>
</ng-container>
<ng-container matColumnDef="name">
<mat-header-cell *matHeaderCellDef mat-sort-header> Name</mat-header-cell>
<mat-cell *matCellDef="let item"> {{item.full_name}}</mat-cell>
</ng-container>
<ng-container matColumnDef="phone">
<mat-header-cell *matHeaderCellDef mat-sort-header> Mobile / Phone</mat-header-cell>
<mat-cell *matCellDef="let item"> {{item.mobile}}</mat-cell>
</ng-container>
<ng-container matColumnDef="email">
<mat-header-cell *matHeaderCellDef mat-sort-header> Email</mat-header-cell>
<mat-cell *matCellDef="let item"> {{item.email}}</mat-cell>
</ng-container>
<ng-container matColumnDef="organization">
<mat-header-cell *matHeaderCellDef mat-sort-header> Organization</mat-header-cell>
<mat-cell *matCellDef="let item"> {{item.organization}}</mat-cell>
</ng-container>
<ng-container matColumnDef="status">
<mat-header-cell *matHeaderCellDef mat-sort-header> status</mat-header-cell>
<mat-cell *matCellDef="let item"> {{item.status}}</mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
</mat-table>
<mat-paginator #paginator
[pageSize]="10"
[pageSizeOptions]="[5, 10, 20]"
[showFirstLastButtons]="true">
</mat-paginator>
</div>
<p-confirmDialog header="Confirmation" icon="fa fa-question-circle" width="425"></p-confirmDialog>
我设置数据源的组件的 ngOnit 部分:
ngOnInit()
{
this.appService.getUserDataList().subscribe(res => {
this.employeeTemp = res;
console.log('THIS IS AGAIN ME', this.employeeTemp);
this.dataSource = new MatTableDataSource(this.employeeTemp);
this.dataSource.paginator = this.paginator;
this.dataSource.sort = this.sort;
});
}
我的confirmDelete
功能:
confirmDelete(item)
{
this.confirmationService.confirm({
message: 'Are you sure you want to delete this Employee?',
header: 'Confirmation',
accept: () => {
this.appService.deleteUser(item.id).subscribe(res => {
// Splice Or something so the page doesnt reload but the data gets removed from the view.
const index = this.dataSource.indexOf(item);
this.dataSource.splice(index, 1);
this.flashMsg.flashMsg('success', 'Deleted', 'User has been deleted.'); // this.EmployeeListComponent();
},
err => {
this.flashMsg.flashMsg('error', 'Error', 'User has not been deleted.');
});
},
reject: () => {
},
});
}
函数中存储的item
值confirmDelete
:
address :" "
email:"asd@asdasd.asdasd"
full_name:"asdf asdf"
id:"asdadasd@asdasd.asdasd"
mobile:"12345678"
organization:"VURUNG TECH"
status:"Active"
updated_at:"2018-06-20T05:15:52.000Z
我flashMessage
显示成功,但拼接不起作用。