Кажется, простой ответ: ваш currentUser (все еще) равен нулю.Вот официальные документы к этому.
Ваша служба предполагает существование вошедшего в систему пользователя, но не проверяет, верно ли это предположение перед обработкой пользовательского объекта.Я считаю, что пользователь еще не полностью помещен / создан внутри firebase, когда ваш сервис уже пытается его получить.Расовые условия.
currentUser = firebase.auth().currentUser; // no validation whether the user exists.
Лучше попробуй так.
Ваше обслуживание
@Injectable()
export class CategoriesListService {
currentUser: any;
private categoriesListRef: any;
constructor(private db: AngularFireDatabase) {
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
this.currentUser = user;
categoriesListRef = this.db.list<Item>(`categories-list/${this.currentUser.uid}`)
} else {
// No user is signed in.
}
});
}
... The rest of your code
Ваш home.ts
constructor(public navCtrl: NavController, public navParams: NavParams, private categories: CategoriesListService) {
if(this.categories.getCategoriesList()) {
this.categoriesList$ = this.categories
.getCategoriesList() //DB List
.snapshotChanges() // Key & Value
.map(changes => {
return changes.map(c => ({
key: c.payload.key,
...c.payload.val()
}));
});
}
}
Таким образом, вы можете убедиться, что пользователь существует.И только тогда процесс начинается.В противном случае система ничего не делает.Возможно, это не совсем то, что соответствует вашим потребностям в деталях, но это должно дать вам правильный совет, чтобы найти ваше окончательное решение.