Angular - 重新加载页面时数据不会保留
Angular - Data don't stay when reloading the page
我对 angular 有点陌生,有些事情我不明白。我希望你能帮助我。
我正在使用 Angular 和 Firebase 构建一个包含注册页面的应用程序。
当我提交注册表单时,一切顺利,数据被发送到 Firebase:
Data stored in 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@gmail.com')
];
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.log('Enregistrement terminé !');
},
(error) => {
console.log('Erreur : ' + error);
}
);
}
getUsersFromServer() {
this.httpClient
.get<any[]>('https://TEST.firebaseio.com/users.json')
.subscribe(
(response) => {
this.users = response;
this.emitUsers();
},
(error) => {
console.log('Erreur ! : ' + error);
}
);
}
constructor(private httpClient: HttpClient) { }
}
我没有显示导入,因为它没有错误。
我是不是误解了Angular基本原理?
重新加载页面时丢失数据是否正常?
提前谢谢大家。
And then the app goes to a page that displays the users list.
在 ngOnInit()
的这个组件中调用您的服务 getUsersFromServer()
这样,当有人重新加载该页面时,将调用 getUsersFromServer()
并且您将获得您的用户列表。
我对 angular 有点陌生,有些事情我不明白。我希望你能帮助我。
我正在使用 Angular 和 Firebase 构建一个包含注册页面的应用程序。 当我提交注册表单时,一切顺利,数据被发送到 Firebase: Data stored in 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@gmail.com')
];
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.log('Enregistrement terminé !');
},
(error) => {
console.log('Erreur : ' + error);
}
);
}
getUsersFromServer() {
this.httpClient
.get<any[]>('https://TEST.firebaseio.com/users.json')
.subscribe(
(response) => {
this.users = response;
this.emitUsers();
},
(error) => {
console.log('Erreur ! : ' + error);
}
);
}
constructor(private httpClient: HttpClient) { }
}
我没有显示导入,因为它没有错误。
我是不是误解了Angular基本原理? 重新加载页面时丢失数据是否正常?
提前谢谢大家。
And then the app goes to a page that displays the users list.
在 ngOnInit()
的这个组件中调用您的服务 getUsersFromServer()
这样,当有人重新加载该页面时,将调用 getUsersFromServer()
并且您将获得您的用户列表。