删除 Firebase 入口角度 2 [英] Delete Firebase entry angular 2
问题描述
我已经寻找了很多来回答这个问题.遵循有关 AngularFire 2 和 Angular 2 本身的文档,但我找不到有效的答案.我只想使用唯一键删除我的 firebase 数据库中的一个条目.我可能可以在 Angular 4 中做到这一点,但我必须为 Angular 2 做到这一点.
任何支持将不胜感激!
import { Component, OnInit } from '@angular/core';从 'angularfire2/database' 导入 { AngularFireDatabase, FirebaseObjectObservable };从rxjs/Observable"导入 {Observable};@成分({选择器:应用列表",templateUrl: './listings.component.html',styleUrls: ['./listings.component.scss']})导出类 ListingsComponent 实现 OnInit {项目:Observable;项目:FirebaseObjectObservable;构造函数(数据库:AngularFireDatabase){this.items = db.list('哈利');this.item = db.object('/Harry/');}删除() {this.item.remove();//删除所有数据.}ngOnInit() {}}
添加了 HTML
<li class="list-group-item" *ngFor="let item of items | async"><p><strong>名称:</strong>{{item.name}}</p><p><strong>电子邮件:</strong>{{item.email}}</p><p><strong>移动:</strong>{{item.mobile}}</p><p><strong>地址:</strong>{{item.address}}</p><div class="editDel row"><div class="col-sm-1"><button class="btn-primary">编辑</button></div><div class="col-sm-1"><button class="btn-danger" (click)="delete()">Delete</button></div>
添加包版本
{"name": "ng2-firebase-addresslist",版本":0.0.0","许可证": "麻省理工学院",角度cli":{},脚本":{"ng": "ng","start": "ng serve","test": "ng 测试","pree2e": "webdriver-manager update --standalone false --gecko false","e2e": "量角器"},私人":真的,依赖关系":{"@angular/common": "^2.3.1","@angular/compiler": "^2.3.1","@angular/core": "^2.3.1","@angular/forms": "^2.3.1","@angular/http": "^2.3.1","@angular/platform-browser": "^2.3.1","@angular/platform-browser-dynamic": "^2.3.1","@angular/router": "^3.3.1","angular2-flash-messages": "^1.0.8","angularfire2": "^2.0.0-beta.7-pre","core-js": "^2.4.1","firebase": "^3.9.0","rxjs": "^5.0.1","ts-helpers": "^1.1.1",zone.js":^0.7.2"},开发依赖":{"@angular/cli": "^1.4.4","@angular/compiler-cli": "^2.3.1","@types/jasmine": "2.5.38","@types/node": "^6.0.42","codelyzer": "~2.0.0-beta.1","jasmine-core": "2.5.2","jasmine-spec-reporter": "2.5.0","业力": "1.2.0","karma-chrome-launcher": "^2.0.0","karma-cli": "^1.0.1","karma-jasmine": "^1.0.2","karma-remap-istanbul": "^0.2.1",量角器":~4.0.13","ts-node": "1.2.1","tslint": "^4.3.0","打字稿": "~2.0.3","webpack": "^3.6.0"}}
所以我注意到很多指南和教程在这个主题上有很大的不同,主要是因为不同版本的 AngularFire2 每次都会改变它的工作方式.对于像我这样正在学习的人来说,这个问题已经引起了很多挫折.
所以我用稍微不同的方法解决了.
我注意到在我的 HTML 中发布此内容为我提供了每个 firebase 对象的单独密钥.
<p><strong>项目密钥:</strong>{{item.$key}}</p>
于是我更进一步,将它包含在我的 onClick 函数中.
<button class="btn-danger" (click)="deleteObject(this.item.$key)">Delete</button>
然后我将其输入到listings.components.ts 中的函数中
deleteObject(itemKey) {this.db.object('/Harry/' + itemKey).remove();}
最终成功地通过密钥一一删除了对象!感谢大家一路上对我的支持.还有 AngularFire2,获得更好的文档!!!
I've looked for quite a bit for an answer to this question. Followed documentation on AngularFire 2 and Angular 2 itself but I can't find a working answer. I simply want to delete an entry in my firebase database using the unique key. I could probably do this in Angular 4 but I'm having to do this for Angular 2.
Any support would be greatly appreciated!
import { Component, OnInit } from '@angular/core';
import { AngularFireDatabase, FirebaseObjectObservable } from 'angularfire2/database';
import {Observable} from "rxjs/Observable";
@Component({
selector: 'app-listings',
templateUrl: './listings.component.html',
styleUrls: ['./listings.component.scss']
})
export class ListingsComponent implements OnInit {
items: Observable<any[]>;
item: FirebaseObjectObservable<any[]>;
constructor(db: AngularFireDatabase) {
this.items = db.list('Harry');
this.item = db.object('/Harry/');
}
delete() {
this.item.remove(); // removes all data.
}
ngOnInit() {
}
}
EDIT: Added the HTML
<ul class="list-group">
<li class="list-group-item" *ngFor="let item of items | async">
<p><strong>Name: </strong>{{item.name}}</p>
<p><strong>Email: </strong>{{item.email}}</p>
<p><strong>Mobile: </strong>{{item.mobile}}</p>
<p><strong>Address: </strong>{{item.address}}</p>
<div class="editDel row">
<div class="col-sm-1"><button class="btn-primary">Edit</button></div>
<div class="col-sm-1"><button class="btn-danger" (click)="delete()">Delete</button></div>
</div>
</li>
</ul>
EDIT: Added package versions
{
"name": "ng2-firebase-addresslist",
"version": "0.0.0",
"license": "MIT",
"angular-cli": {},
"scripts": {
"ng": "ng",
"start": "ng serve",
"test": "ng test",
"pree2e": "webdriver-manager update --standalone false --gecko false",
"e2e": "protractor"
},
"private": true,
"dependencies": {
"@angular/common": "^2.3.1",
"@angular/compiler": "^2.3.1",
"@angular/core": "^2.3.1",
"@angular/forms": "^2.3.1",
"@angular/http": "^2.3.1",
"@angular/platform-browser": "^2.3.1",
"@angular/platform-browser-dynamic": "^2.3.1",
"@angular/router": "^3.3.1",
"angular2-flash-messages": "^1.0.8",
"angularfire2": "^2.0.0-beta.7-pre",
"core-js": "^2.4.1",
"firebase": "^3.9.0",
"rxjs": "^5.0.1",
"ts-helpers": "^1.1.1",
"zone.js": "^0.7.2"
},
"devDependencies": {
"@angular/cli": "^1.4.4",
"@angular/compiler-cli": "^2.3.1",
"@types/jasmine": "2.5.38",
"@types/node": "^6.0.42",
"codelyzer": "~2.0.0-beta.1",
"jasmine-core": "2.5.2",
"jasmine-spec-reporter": "2.5.0",
"karma": "1.2.0",
"karma-chrome-launcher": "^2.0.0",
"karma-cli": "^1.0.1",
"karma-jasmine": "^1.0.2",
"karma-remap-istanbul": "^0.2.1",
"protractor": "~4.0.13",
"ts-node": "1.2.1",
"tslint": "^4.3.0",
"typescript": "~2.0.3",
"webpack": "^3.6.0"
}
}
So I've noticed a lot of the guides and tutorials differ wildly on this topic mostly because different versions of AngularFire2 change how this works each time. An issue which has caused a lot of frustration for someone like myself who is learning.
So I solved it using a slightly different method.
I noticed posting this in my HTML gave me my individual key for each firebase object.
<p><strong>Item Key: </strong>{{item.$key}}</p>
So I then took it a step further and included it in my onClick function.
<button class="btn-danger" (click)="deleteObject(this.item.$key)">Delete</button>
Which I then fed into my function in listings.components.ts
deleteObject(itemKey) {
this.db.object('/Harry/' + itemKey).remove();
}
That successfully ended up removing the objects by their key one-by-one! Thanks for everyones support here that helped me along the way. Also AngularFire2, get better documentation!!!
这篇关于删除 Firebase 入口角度 2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!