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
が表示されますが、スプライスが機能しません。