Я немного новичок в angular и кое-что не понимаю. Я надеюсь, ты сможешь мне помочь.
Я создаю приложение с Angular и Firebase, которое включает страницу регистрации. Когда я отправляю форму регистрации, все идет хорошо, и данные отправляются в Firebase: Данные, хранящиеся в Firebase
Затем приложение переходит на страницу со списком пользователей. Новый пользователь находится там, как и планировалось.
Дело в том, что когда я перезагружаю список, он пуст, но данные все еще находятся в Firebase.
Вот код для компонента списка пользователей (того, который отображает пользователей):
export class UserListComponent implements OnInit, OnDestroy {
users: User[];
userSubscription: Subscription;
constructor(private userService: UserService) { }
ngOnInit() {
this.userSubscription = this.userService.userSubject.subscribe(
(users: User[]) => {
this.users = users;
}
);
this.userService.emitUsers();
}
ngOnDestroy() {
this.userSubscription.unsubscribe();
}
}А вот код для userService (тот, который получает данные из Firebase):
@Injectable()
export class UserService {
private users: User[] = [
new User('admin', 'admin', '[email protected]')
];
userSubject = new Subject<User[]>();
emitUsers() {
this.userSubject.next(this.users.slice());
}
addUser(user: User) {
this.users.push(user);
this.emitUsers();
}
saveUsersToServer() {
this.httpClient
.put('https://TEST.firebaseio.com/users.json', this.users)
.subscribe(
() => {
console.info('Enregistrement terminé !');
},
(error) => {
console.info('Erreur : ' + error);
}
);
}
getUsersFromServer() {
this.httpClient
.get<any[]>('https://TEST.firebaseio.com/users.json')
.subscribe(
(response) => {
this.users = response;
this.emitUsers();
},
(error) => {
console.info('Erreur ! : ' + error);
}
);
}
constructor(private httpClient: HttpClient) { }
}Импорт не показывал, т.к. бага нет.
Я что-то неправильно понял в основах Angular? Потеря данных при перезагрузке страницы - это нормально?
Заранее спасибо, ребята.
Спасибо за совет, хотя бы реальный адрес электронной почты.
Почему вы вообще "перезагружаете" страницу?
Чтобы увидеть, что он делает, если это делает пользователь.
Если вы хотите, чтобы данные сохранялись между обновлениями страниц, выберите LocalStorage или sessionStorage.
Но что, если мне нужно много хранить?





And then the app goes to a page that displays the users list.
В этом компоненте на ngOnInit() вызовите свои службы getUsersFromServer() Таким образом, когда кто-нибудь перезагрузит эту страницу, будет вызван getUsersFromServer(), и вы получите список пользователей.
Оливье, на будущее, скрой свой URL. Я могу получить информацию обо всех ваших пользователях. [{"email": "[email protected]", "login": "admin", "pas sword": "admin"}, {"em ail": "[email protected]" , "login": "toto", "pa ssword": "toto"}] PS: Используйте angularFire2, это сэкономит вам много времени! npm устанавливает -s angularfire2