5

Fehler: Uncaught (in Versprechen): Typeerror: Kann nicht gesetzt Eigenschaft 'isAdmin' von null

firebase.auth().onAuthStateChanged((user) => { 
    if(user) { 
    this.isLoggedIn = true; //Set user loggedIn is true; 
    this.isAdmin = false; 
    firebase.database().ref('/userProfile/' + user.uid).once('value').then(function(snapshot) { 
     let userInfo = snapshot.val(); 
     if(userInfo.isAdmin == true) { 
     //ERROR AT THIS LINE: 
     //Error: Uncaught (in promise): TypeError: Cannot set property 'isAdmin' of null 
     this.isAdmin = true; 
     console.log(userInfo); 
     } 
    }); 
    } else { 
    this.isLoggedIn = false; //Set user loggedIn is false; 
    } 
}); 

Ich erhalte Fehler in Zeile no.8

Error: Uncaught (in promise): TypeError: Cannot set property 'isAdmin' of null

Bitte um Hilfe!

Antwort

7

Entweder können Sie Pfeil Funktion

firebase.database().ref('/userProfile/' + user.uid).once('value') 
.then((snapshot) => { 

oder verwenden Sie verwenden

var self = this; 

firebase.database().ref('/userProfile/' + user.uid).once('value') 
.then(function(snapshot) { 
    self.isAdmin = true; 

sonst this nicht auf die aktuelle Funktion nicht zeigen, wenn sie aufgerufen wird.

Siehe auch https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Functions/Arrow_functions

+1

Diese Antwort ist korrekt. Der 'this'-Bereich ändert sich innerhalb des Firebase-Datenbank-Callbacks, daher müssen Sie den Verweis ordnungsgemäß beibehalten. –

+1

Danke! Das hat mein Problem gelöst! –

+0

@Gunter hast du eine Seite über angular 2 kann ich über dieses 'scope lesen? – crh225