【发布时间】:2021-08-08 20:23:19
【问题描述】:
我有一个应用程序,所有状态管理架构都实现为可观察数据服务。我想弄清楚的是创建可通过服务使用的共享列表和字典的最佳方式是什么。我知道这听起来很简单——但由于我是 Angular 8 的新手——我仍然无法理解 rxjs 的所有最佳实践。
为了说明我的问题 - 这是一个服务,一个用户列表,我想一次性使用数据(作为单例)并能够通过组件轻松获取它
export class ApiService {
public users = new BehaviorSubject<any>({‘users’: []});
constructor(private http: HttpClient}
public getUsers(){
return this.http.get(‘/users’).subscribe((res)=>{this.users.next(res)})
}
}
这是我使用用户列表的方式
export class UsersComponent implements OnInit {
public usersList: BehaviorSubject<any>;
constructor(public apiService:ApiService) {
this.usersList = new BehaviorSubject<any>([]);
this.apiService.users.subscribe((value: any) => {
this.usersList.next(value);
});
}
}
现在,我不确定这是不是正确的方式 - 因为逻辑似乎在组件和服务中重复......(我在这里可能错了......)只是为了详细说明 - 用户列表应该是一个应该只实例化一次的静态数据。
【问题讨论】:
-
组件中不需要
BehaviorSubject。只需使用您从this.apiService.users引用的那个。