2017-03-08 3 views
1

Ich arbeite an einer ionic 2-App mit Firebase v3 als Datenbank. meine Funktion funktioniert schon, aber wenn ich versuche, eine einfache Benachrichtigung angezeigt werden um den Benutzer zu sagen, was falsch ist es mir diesen Fehler gibt:Eigenschaft 'alertCtrl' von null kann nicht gelesen werden

Cannot read property 'alertCtrl' of null 

Hier ist meine Funktion:

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

Ich versuche, habe viel Versuchen Sie, die this Schlüsselwort kein Verweis auf die Komponente mehr durch doin: verschiedene Lösungen, aber nichts scheint :( Vielen Dank im Voraus zu arbeiten

Antwort

1

Da Sie innerhalb einer Funktion (function(snapshot,prevChildKey){ ... } diese Funktion) sind!. g es wie folgt aus:

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

} 

Der Unterschied ist, dass jetzt ein Pfeil Funktion und ...

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 Sie verwenden! es funktioniert jetzt!!! : D –

Verwandte Themen