我在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数据库中的远程和局部更改同步