从角度4中的firebase删除行数据

时间:2018-02-15 11:21:34

标签: typescript firebase firebase-realtime-database angularfire2 smart-table

我正在开发Angular 4项目我想从firebase中删除一个单击的行

以下是我的智能表代码

FluentWait<WebDriver>

onDelete()函数如下

<ng2-smart-table [settings]="settings" [source]="source" (edit)="onEdit($event)" (delete)="onDelete($event)">

    </ng2-smart-table>

我在服务中编写了deleteEnquiry函数,如下所示

onDelete(event) {
console.log(event);
    if (window.confirm('Are you sure you want to delete?')) {
      this.service.deleteEnquiry(event.data);
    } else {
      event.confirm.reject();
    }
  }

但它对我不起作用,它显示我在控制台中出现以下错误

deleteEnquiry(data){
console.log(data);
this.af.list('/enquirydata/').remove(data);
}

任何帮助?

3 个答案:

答案 0 :(得分:0)

试试这个

deleteEnquiry(data){
    console.log(data.$key);
    this.af.list(`/enquirydata/${data.$key}`).remove(data);
 }

答案 1 :(得分:0)

由于您要传递事件对象,因此需要将event.value传递给服务

 onDelete(event) {
  console.log(event.value);
  if (window.confirm('Are you sure you want to delete?')) {
    this.service.deleteEnquiry(event.value);
  } else {
    event.confirm.reject();
  }
 }

更改您的服务

 deleteEnquiry(data){
    console.log(data.$key);
    this.af.list(`/enquirydata/${data.$key}`).remove(data);
  }

答案 2 :(得分:0)

另请查看此文档:https://github.com/angular/angularfire2/blob/master/docs/rtdb/lists.md

<强> snapshotChanges()     它是什么? - 作为同步数组返回一个Observable数据     AngularFireAction []。

你为什么要用它? - 当您需要数据列表但又想保留元数据时。元数据为您提供了underyling DatabaseReference和快照键。拥有快照键可以更轻松地使用数据操作方法。由于type属性,此方法可以为其他Angular集成提供更大的功能,例如ngrx,表单和动画。每个AngularFireAction上的type属性对ngrx reducers,form states和animation states都很有用。

你什么时候不用? - 当您需要比数组更复杂的数据结构时,或者您需要在发生更改时处理更改。此阵列与Firebase数据库中的远程和本地更改同步