Я пытаюсь использовать одни и те же данные в ngOnInit
нескольких компонентов, проблема в том, что данные являются случайными каждый раз, когда я подписываюсь на него.Я могу подписаться только один раз за весь прогон приложения.Это означает, что если я подписываюсь дважды, это бесполезно, потому что у каждого компонента будет что-то еще.
Я хочу один раз подписаться в сервисе и создать глобальную переменную.но когда вы пытаетесь использовать эту глобальную переменную во всех компонентах (на ngOnInit
), она всегда не определена.
Как заставить компоненты ждать одну и ту же вещь, которая может быть вызвана только один раз в приложении?
export class UsersService {
public allUsers: Array<Object> = []
public allUsersUrl: string = 'https://glacial-escarpment-40412.herokuapp.com/users/'
constructor(private http: HttpClient) {
this.getAllUsers().subscribe(data => {
this.allUsers = data;
console.log(this.allUsers)
})
}
getAllUsers(): Observable<any> {
return this.http.get<any>(this.allUsersUrl);
}
getUser(id: number): Observable<any> {
return this.http.get<any>(this.allUsersUrl + id);
}
}
Мои компоненты:
export class FirstComponent {
constructor(private usersService: UsersService){}
ngOnInit() {
console.log(this.usersService.allUsers) //undefined
}
export class SecondComponent {
constructor(private usersService: UsersService){}
ngOnInit() {
console.log(this.usersService.allUsers) //undefined
}
Пожалуйста, помогите мне:)