2017-11-26 6 views
0

私はイオンアプリを持っており、FirebaseListObservableが削除された新しいanglefire2バージョン5にアップデートしました。Ionicv2 Angularfire2 v5私はプッシュで新しいアイテムを作成できません

今、私はこのような初期化:私は新しいアイテムを作成するために、イオン性Actionsheetハンドラを持っていただけに、それをプッシュする前に、私は唯一の

items: FirebaseListObservable<any>; 

をしたFirebaseListObservableの除去の前に

items: Observable<any>; 

    constructor(public navCtrl: NavController, public alertCtrl: AlertController, af: AngularFireDatabase, public actionSheetCtrl: ActionSheetController) { 
    this.items = af.list('/items').valueChanges(); 
    } 

データベースのノード:

addItem(){ 
let prompt = this.alertCtrl.create({ 
    title: 'Name', 
    message: "", 
    inputs: [ 
    { 
     name: 'title', 
     placeholder: 'Name' 
    }, 
    ], 
    buttons: [ 
    { 
     text: 'Cancel', 
     handler: data => { 
     } 
    }, 
    { 
     text: 'Save', 
     handler: data => { 
     this.items.push({ 
      title: data.title 
     }); 
     } 
    } 
    ] 
}); 
prompt.present();} 

しかし、 "this.items.push({" funcもう動作しません。新しいアイテムをデータベースに再度プッシュするにはどうすればいいですか?

FirebaseListObservableを使用する前は問題ありませんでした。 私は今すぐエラーメッセージを受け取ります: _this.items.pushは機能ではありません

しかし、どういうわけか私はそれのための置き換えを見つけることはありません。

fyi:私は観察と反応であまり良くありません。ですから問題がある場合は詳細にお知らせください。

答えて

1

anglefire2の構文がありません。 af.list('/items').valueChanges()FirebaseListObservable<any>の代わりにObservable<{}[]>を返します。

だから、次のように試してみてください。

items: Observable<any>; 
itemsRef: AngularFireList<{}>; 

    constructor(public navCtrl: NavController, public alertCtrl: AlertController, af: AngularFireDatabase, public actionSheetCtrl: ActionSheetController) { 
    this.itemsRef = af.list('/items'); 
    this.items = this.itemsRef.valueChanges(); 
    } 

そしてセクションを追加更新してください、

addItem(){ 
    let prompt = this.alertCtrl.create({ 
    title: 'Name', 
    message: "", 
    inputs: [ 
     { 
     name: 'title', 
     placeholder: 'Name' 
     }, 
    ], 
    buttons: [ 
     { 
     text: 'Cancel', 
     handler: data => { 
     } 
     }, 
     { 
     text: 'Save', 
     handler: data => { 
      this.itemsRef.push({ 
      title: data.title 
      }); 
     } 
     } 
    ] 
    }); 
    prompt.present(); 
} 

私はこのangularfire2 guideいくつかの続きを読むすることをお勧めいたします。がんばろう。

+0

ありがとうございました!また、リスト内の1つの項目のキーを取得する方法も知っていますか? 1つのアイテムを削除する必要があります。現在、データベース内の/ itemsノードを含むリスト全体が常に削除されます。上記のガイドでは、remove関数に渡されたキーがないため、リスト全体が削除されています。私はremoveItem(itemId:string){ this.itemsRef.remove(itemId);を使用します。 } – Klaxx

+1

https://github.com/angular/angularfire2/blob/master/docs/rtdb/lists.md#deleting-the-entire-listこのガイドをもう一度確認してください。 'this.items = this.itemsRef.snapshotChanges()。map(変更点=> { return changes.map(c =>({key:c.payload.key、... c.payload.val() }); }); **** app **はfirebaseリアルタイムデータベースの 'crud operations'を示しています。 – sdey0081

関連する問題