2017-03-08 9 views
1

私はFirebase v3をデータベースとして使用しているイオン2アプリで作業しています。私の機能はすでに動作しますが、私が間違って何をユーザーに伝えるために、単純な警告を表示しようとすると、それは私に、このエラーを与える:ここでnullのプロパティ 'alertCtrl'を読み取ることができません

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 
      }) 
     } 
    }); 
    } 

私は多くのことをしようとしましたさまざまなソリューションを、何も事前に:( 感謝を動いていないようにみえ

答えて

1

あなたは、関数の中にいるので(この機能:function(snapshot,prevChildKey){ ... })!thisキーワードはもうコンポーネントへの参照ではありませんdoinので試してみてください。

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.

+1

Thankss:このようなグラムそれを!それは今働く! :D –

関連する問題