Angular:如何使用aggrid和HttpClient delete从我的json服务器中删除用户?

时间:2018-08-16 16:01:04

标签: angular httpclient ag-grid

所以我在这里有点迷路了。我有一个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;
  }

}

1 个答案:

答案 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>`