Angular 如何从mat table材质设计中删除mat行

Angular 如何从mat table材质设计中删除mat行,angular,angular-material,angular-cdk,Angular,Angular Material,Angular Cdk,目前我使用角材料设计垫表。请帮助我从mat表中删除数据记录 代码如下: 名称 {{element.modelname} 数 {{element.modelnumber} 曼努法克 {{element.manufacturer}} {{pageSize}}/{{length} {{pageEvent.pageSize*pageEvent.pageIndex+pageEvent.pageSize}/{{pageEvent.length} {{pageEvent.length}/{{pageEven

目前我使用角材料设计垫表。请帮助我从mat表中删除数据记录

代码如下:


名称
{{element.modelname}
数
{{element.modelnumber}
曼努法克
{{element.manufacturer}}
{{pageSize}}/{{length}
{{pageEvent.pageSize*pageEvent.pageIndex+pageEvent.pageSize}/{{pageEvent.length}
{{pageEvent.length}/{{pageEvent.length}

请检查并让我知道任何建议。

这是一个按钮。它位于members部分的这个主组件上,该部分有调用它的子组件,包括这个组件的html。它从表中传递参数以及上面的服务工作所需的任何其他参数。我将其包括在内,以便您了解表代码中的delete行在重要情况下的工作方式

members.component.ts

/---删除---
公共删除成员(itemId){
返回此.mainComponentService.deleteItem(
这个.dbTable,
itemId,
这是我的名字,
这是我的名字,
这个.tableItemId,
这是paginator,
这个是.dataSource
);
}
从单击事件调用的html

members.component.html


选择权
看法
删除
编辑
现在删除肉。它位于更高级别的组件上,位于成员、项目等部分的上方,并由应用程序这些部分中的顶级组件使用。节省大量的复制和粘贴

请注意主操作下面的deleteRowDataTable函数。这将从数据表中删除该行,以便用户在执行操作后看到该行已被删除。诀窍是从数据库中删除它,然后从数据源对象中删除数据。这样,用户就不必从数据库中刷新数据源

main-component.service.ts

/---删除---
公共deleteItem(dbTable、itemId、name1、name2、tableItemId、paginator、dataSource){
//从要删除的记录中获取名称以在对话框中发出警告。
this.dsData=dataSource.data;
const record=this.dsData.find(obj=>obj[tableItemId]==itemId);
常量名称='Delete'+记录[name1]+'+记录[name2]+'?';
//调用确认对话框组件
this.confirmService.confirm(名称:“此操作是最终的。永远消失!”)
.switchMap(res=>{if(res===true){
返回此.appService.deleteItem(dbTable,itemId);
}})
.订阅(
结果=>{
这就是成功;
//刷新DataTable以删除行。
this.deleteRowDataTable(itemId、tableItemId、分页器、数据源);
},
(错误:HttpErrorResponse)=>{
console.log(err.error);
控制台日志(错误消息);
this.messagesService.openDialog('错误','未发生删除');
}
);
}
//从数据表中删除删除的行。需要先从下载的数据中删除。
私有deleteRowDataTable(itemId、tableItemId、分页器、数据源){
this.dsData=dataSource.data;
const itemIndex=this.dsData.findIndex(obj=>obj[tableItemId]==itemId);
数据源.数据.拼接(itemIndex,1);
dataSource.paginator=paginator;
}
这项服务很简单,与app.module等一起位于堆栈顶部。这不是你问题的一部分,但可能对某人的完整答案有用

app.service.ts

/----删除单个记录----
公共deleteItem(dbTable:string,itemId:number):可观察{
返回此文件。http
.delete(`this.baseUrl}${dbTable}?ids=${itemId}`,{headers:this.headers});
}