Ionicv2 Angularfire2 v5 我无法通过推送创建新项目

Ionicv2 Angularfire2 v5 I cant create new items with push

我有一个离子应用程序,我刚刚更新到新的 angularfire2 版本 5,其中删除了 FirebaseListObservable。

现在我这样初始化:

  items: Observable<any>;

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

在删除 FirebaseListObservable 之前我只做了

items: FirebaseListObservable<any>;

在我使用离子 Actionsheet 处理程序创建新项目并将其推送到数据库节点之前:

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({"功能已经失效了。如何再次将新项目推送到数据库?

在使用 FirebaseListObservable 之前没有问题。 我现在收到的错误消息是: _this.items.push 不是函数

但不知何故我没有找到它的替代品。

fyi:我不太擅长观察和响应。所以如果问题在那里,请详细告诉我。

您缺少 angularfire2 语法。 af.list('/items').valueChanges() returns Observable<{}[]> 而不是 FirebaseListObservable<any>.

所以请尝试以下操作:

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。祝你好运。