У меня есть приложение, в котором вся архитектура управления состоянием реализована в виде Observable Data Services. Я пытаюсь выяснить, как лучше всего создавать общие списки и словари, которые будут доступны через сервисы. Я знаю, это звучит просто, но, поскольку я новичок в 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
.