所以我在这里有点迷路了。我有一个json文件,我从那里获取数据。我执行了一个get请求,并且还添加了一些rxjs运算符,以便在添加新数据时它会自动更新。此数据以如下方式显示在我的网格中:
this.columnDefs = [
{ headerName: 'id', field: 'id', hide: true },
{headerName: 'First Name', field: 'firstName' },
{headerName: 'Last Name', field: 'lastName' },
{headerName: 'Email', field: 'email'},
{headerName: 'File Type', field: 'fileType'},
{
headerName: '',
field: '_id',
cellRendererFramework: RemoveButton,
colId: "params",
width: 100
}
];
我在网格的每一行中都有一个删除按钮。我正在尝试获取此按钮,以使用http.delete请求从网格和服务器中删除数据。据我了解,我将检索行ID,然后在服务类中执行以下操作:
deleteUser(id: number): Observable<void> {
return this.http.delete<void>(`${this._url}/${id}`).pipe(
catchError(this.handleErrorObservable))
}
但是我无法从数据网格中正确检索用户ID。运行此代码时,我收到一条错误消息,提示ID未定义。如果我想检索firstName,lastName等,情况也将相同。我不确定如何正确地从json服务器检索id,以便我可以识别行并执行删除请求。我需要以某种方式让该行中的每个按钮获取该特定行的ID,然后根据该信息删除数据。如果有帮助,这是我的删除按钮的html:
template: `<span><button style = "height: 20px" (click)="delete()"> X </button></span>`
谢谢!
编辑:这是删除按钮组件类:
@Component({
selector: 'app-remove-button',
styleUrls: ['./remove-button.component.css'],
template: `<span><button style = "height: 20px" (click)="delete()"> X </button></span>`
})
export class RemoveButton implements ICellRendererAngularComp {
public params: any;
employee: Employees //Model
constructor( private service: Service) { }
@Input() id: number;
agInit(params: any): void {
this.params = params;
}
delete(id) {
id = this.employee.id;
this.service.deleteUser(id).subscribe(
()=> console.log(`Employee with Id = ${this.employee.id}deleted`),
(err) => console.log(err)
);
}
refresh() {
return true;
}
}
答案 0 :(得分:0)
它是undefined
,因为您没有将参数传递给delete()
。您没有发布足够的代码来修改它,但这应该可以帮助您入门。
它像您的删除按钮一样是 ,因此您应将id
传递为@Input() id: number
并在表调用{{1 }}。
该组件的模板应为:
<del [id]="row.id"></del>
删除方法:
template: `<span><button style = "height: 20px" (click)="delete(id)"> X </button></span>`