到目前为止,我已经能够将我的CRUD应用程序迁移到Firebase。我可以列出,创建和删除新闻。我虽然在努力编辑。
这是编辑组件。它会获取路径参数的快照,该快照等于Firebase中该特定新闻的$ key值。然后我将它连接到数据库列表:
import { Component} from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { AngularFire, FirebaseListObservable } from 'angularfire2';
@Component({
moduleId: module.id,
selector: 'app-edit-news',
templateUrl: 'edit-news.component.html',
styleUrls: ['edit-news.component.css']
})
export class EditNewsComponent {
noticia: FirebaseListObservable<any>;
constructor(
private route: ActivatedRoute,
private af: AngularFire) {
this.news = af.database.list('news/'+this.route.snapshot.params['id']);
}
}
我是观察者的新手,但我想到这一点,我可以使用插值来访问数据库的具体对象,我们{{news.title}}
显然,我错了。有什么帮助吗?
答案 0 :(得分:3)
在EditNewsComponent的html模板中使用
{{(news | async)?.title}} // you don't need '?' if it can't be null
也可能需要更改
this.news = af.database.list('news/'+this.route.snapshot.params['id']);
到
this.news = af.database.object('news/'+this.route.snapshot.params['id']);
以便您访问对象而不是列表。
答案 1 :(得分:0)
使用此语法
noticia: firebaseListObservable<any[]>;
constructor(private db: AngularFireDatabase,public af:AngularFireAuth) {
this.noticia = db.list('/news',{
query: {
orderByChild:'id'
}
});
}