无法读取 null 的 属性 'alertCtrl'

Cannot read property 'alertCtrl' of null

我正在使用 Firebase v3 作为我的数据库开发一个 ionic 2 应用程序;我的功能已经可以工作了,但是当我尝试显示一个简单的警报来告诉用户出了什么问题时,它给了我这个错误:

Cannot read property 'alertCtrl' of null

这是我的函数:

 updateUniqueCode(uniqueCode: string): any {

    this.userProfile.on("child_added", function(snapshot,prevChildKey){
      let allUniqueCodes = snapshot.val();

      if (allUniqueCodes.uniqueCode === uniqueCode){

        let alert = this.alertCtrl.create({
                            message: "no",
                            buttons: [{ text: "Ok"} ]
                        });

                        alert.present();



      } else {

        let currentUser = firebase.auth().currentUser;
        let userProfile = firebase.database().ref('/userProfile');

          return userProfile.child(currentUser.uid).update({
            uniqueCode:uniqueCode
            })
      }
    });
  }

我尝试了很多不同的解决方案,但似乎没有任何效果:( 提前致谢!

由于您在函数内部(此函数:function(snapshot,prevChildKey){ ... }),this 关键字不再是对组件的引用。尝试这样做:

updateUniqueCode(uniqueCode: string): any {

    this.userProfile.on("child_added", (snapshot,prevChildKey) => {
      let allUniqueCodes = snapshot.val();

      if (allUniqueCodes.uniqueCode === uniqueCode){

        let alert = this.alertCtrl.create({
                            message: "no",
                            buttons: [{ text: "Ok"} ]
                        });

                        alert.present();



      } else {

        let currentUser = firebase.auth().currentUser;
        let userProfile = firebase.database().ref('/userProfile');

          return userProfile.child(currentUser.uid).update({
            uniqueCode:uniqueCode
            })
      }
    });

}

区别在于现在您使用的是箭头函数并且...

An arrow function expression has a shorter syntax than a function expression and does not bind its own this, arguments, super, or new.target.