从Angular 4中删除Firebase的行数据



我在Angular 4项目中工作,我想从Firebase

删除一个单击的行

以下是我的智能表代码

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

ondelete((函数如下

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函数,如下所示

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

但它对我不起作用,它显示了我在控制台中的错误

ERROR Error: Expects a string, snapshot, or reference.

有帮助吗?

尝试此

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

由于您要通过事件对象,因此需要将事件传递到服务

 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);
  }

还检查此文档:https://github.com/angular/angular/angularfire2/blob/master/master/docs/rtdb/lists.md

snapshotchanges(( 它是什么? - 返回可观察到的数据作为同步数组 AngularFireAction []。

为什么要使用它? - 当您需要数据列表时,也想围绕元数据。元数据为您提供了不同的dataBaseReference和快照密钥。拥有快照的键可以使使用数据操纵方法更容易。此方法为您提供了更多的马力,该动力通过类型属性引起的其他角集成,例如NGRX,表单和动画。每个AngularFireAction上的类型属性对于NGRX还原器,表单状态和动画状态很有用。

您什么时候不使用它? - 当您需要比数组更复杂的数据结构时,或者需要在处理过程中处理更改时。此数组与Firebase数据库中的远程和局部更改同步

最新更新