使用Angular 2和AngularFire访问Firebase列表值

时间:2016-08-06 16:14:07

标签: angular firebase angularfire2

到目前为止,我已经能够将我的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}}显然,我错了。有什么帮助吗?

2 个答案:

答案 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'
              }
     });
   }