2016-08-06 11 views
0

これまでのところ、CRUDアプリをFirebaseに移行することができました。私は、ニュースのリスト作成、削除ができます。私は編集に苦労している。Firebaseのリストの値にAngular 2とAngularFireを使ってアクセスする

これは編集コンポーネントです。 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}}、このような補間を使用して、データベースの具体的なオブジェクトにアクセスすることが可能性があり、これに思いました。どんな助け? EditNewsComponentのためのHTMLテンプレートで

+0

は、あなたはニュースが観測使用しているテンプレートの一部を提供していただけますか?私はあなたのngfor呼び出しに非同期パイプを追加していないと感じています。例えば、* ngFor = "アイテムの項目を非同期にする" –

+0

@ Yevgeniy.Chernobrivetsこれには繰り返しはありません。これは '[(ngModel)] =" news.foo "で入力内のデータベースからいくつかのニュース値を受け取り、それらを編集して変更を保存できる形式です。私が言及した補間は、値にアクセスする単なる例にすぎません。 – cerealex

答えて

3

はおそらくも、あなたがオブジェクトではなく、リストにアクセスしているように、

this.news = af.database.object('news/'+this.route.snapshot.params['id']); 

this.news = af.database.list('news/'+this.route.snapshot.params['id']); 

を変更する必要が

{{(news | async)?.title}} // you don't need '?' if it can't be null 

を使用します。

+0

ええと...私はそれをオブジェクトに変更しました。私の間違い。しかし問題はまだそこにある。補間構文を使用する代わりに、これらのオブジェクト値を '[(ngModel)]で入力ノードにどのようにバインドしますか?私は結局、既存のニュースを編集して保存できる必要があります。どうも! – cerealex

0

使用この構文

noticia: firebaseListObservable<any[]>; 
constructor(private db: AngularFireDatabase,public af:AngularFireAuth) { 
    this.noticia = db.list('/news',{ 
     query: { 
      orderByChild:'id' 
       } 
    }); 
    } 
関連する問題