Ich bekomme Laufzeitfehler, wenn ich als nächstes (..) auf ein BehaviorSubject setze, das ein firebase.User | ist Null-TypBehaviorSubject weiter nicht definiert
subscribe.js:165 TypeError: Cannot read property 'next' of undefined
Hier ist der Code, der das Problem verursacht.
export class AppAuthService {
private currentUserSubject = new BehaviorSubject<firebase.User |null>(null);
public currentUser = this.currentUserSubject.asObservable().distinctUntilChanged();
private isAuthenticatedSubject = new ReplaySubject<boolean>(1);
public isAuthenticated = this.isAuthenticatedSubject.asObservable();
constructor(public afAuth: AngularFireAuth) {
afAuth.auth.onAuthStateChanged(this.onAuthStateChanged);
}
onAuthStateChanged(user: firebase.User): void {
if (user) {
this.currentUserSubject.next(user); <------err
this.isAuthenticatedSubject.next(true);
console.log('loggedIN!');
} else {
this.currentUserSubject.next(null); <-------err
this.isAuthenticatedSubject.next(false);
console.log('GONE!');
}
}
}
Der Fehler zeigt jederzeit, wenn this.currentUserSubject.next(..)
einen Benutzer obj oder null gesetzt wird. Ich vermute, seine weil die currentUserSubject mit null und im nächsten von Null ist falsch initialisiert wird? ...
private currentUserSubject = new BehaviorSubject<firebase.User |null>(null);
Ich bin nicht in der Lage, es zu initialisieren mit new firebase.User()
, weil seine eine Schnittstelle und kein Objekt.
Auch die Deklaration von currentUserSubject als Betreff führt zu demselben Fehler.
private currentUserSubject = new Subject();
Was ist der beste Weg, um die Firebase.User Schnittstelle in ein Subject/ReplaySubject zu konvertieren? Ich versuche dies zu tun, so dass, wenn der Benutzer etwas an der Profil-Komponente ändert, es auf dem Firebase-Server dynamisch aktualisiert wird.
Danke.
Ihr Fehler macht keinen Sinn. Ich habe es hier versucht und es funktioniert: https://plnkr.co/edit/etWUx93vtQkfp0mkhbnU?p=preview Sind Sie sicher, dass Sie keine Methode 'set currentUserSubject (v) {' irgendwo? – acdcjunior