实际上,我想从列表中删除数据。但是我在使用此代码时遇到了麻烦。
组件代码
removeSelectedRows(){
console.log(this.selection.selected.map(item => item.userId))
const selectedRowIds = this.selection.selected.map(item => item.userId);
console.log(selectedRowIds)
this.UserService.deleteUser(selectedRowIds).subscribe(res =>{
this.dataSource.data = this.dataSource.data.filter(data => data.userId !== selectedRowIds);
}, err =>{
console.error(err);
}, ()=>{
// this.clearUserForm();
this.loadUsers(this.pageIndex);
});
}
错误是从这部分this.UserService.deleteUser(selectedRowIds).subscribe(res =>{
this.dataSource.data = this.dataSource.data.filter(data => data.userId !== selectedRowIds)
出来的。
selectRowIds
错误出现
'string []'类型的参数不能分配给'string'类型的参数
答案 0 :(得分:0)
selectedRowIds
是一个数组。因此,您无法将string
与array of strings
进行比较。也许您可以使用Array.includes()
this.dataSource.data.filter(data => !selectedRowIds.includes(data.userId))
希望这会有所帮助。
更新
这只是一个假设,因为我不知道deleteUser
方法的内容。该服务的方法似乎期望用户的单个 ID。因此,您需要遍历所选的ID或重构服务方法以使其接受ID数组。但是要小心,如果您遍历数组并为每个用户分别调用,并且调用了API端点,则可能会导致不良行为。
selectedRowIds.forEach((selectedID) => {
this.UserService.deleteUser(selectedID).subscribe(res =>{
// ^^ Here's a single ID
this.dataSource.data = this.dataSource.data.filter(data => data.userId !== selectedID);
// ^^^^^^^^^^^^^^^^ filter by selectedID
}, err =>{
console.error(err);
}, ()=>{
// this.clearUserForm();
this.loadUsers(this.pageIndex);
}
);
});
但是我不建议这样。它可能导致对API的多次调用(如果使用的话)
答案 1 :(得分:0)
我找到了答案,并且可以解决我的问题
组件代码
selectedRow: any;
removeSelectedRows(){
console.log(this.selectedRow.userId)
this.UserService.deleteUser(this.selectedRow.userId).subscribe(res =>{
this.dataSource.data = this.dataSource.data.filter(data => data.userId!== this.selectedRow.userId);
}, err =>{
console.error(err);
}, ()=>{
this.ngOnInit();
this.loadUsers(this.pageIndex);
});
}