【发布时间】:2017-10-03 03:56:01
【问题描述】:
我正在从 http 获取数据,将其存储在同一服务中的数组中。
export class UserService {
myusers: User[];
constructor(private http: HttpClient) {}
getUsers () {
return this.http.get<User[]>('https://randomuser.me/api/results=5')
.subscribe( data => { this.myusers = data['results']}); }
}
当我在 component.ts 中控制台我的用户时,它会打印“未定义”。
export class UserComponent implements OnInit {
constructor(private service: UserService) { }
ngOnInit() {
this.service.getUsers();
console.log(this.service.myusers); //undefined
}
}
那么我如何访问this.service.myusers?不要建议将数据存储在组件数组而不是服务 myusers 数组中的解决方案。
【问题讨论】:
-
请查看 rxjs 的文档。阅读 observables 和 promise。您的数据是异步的。 .你不能指望服务在你调用它时返回值,所以你应该在你的服务中返回 Observable 并在你的组件中订阅它。
-
所以没有办法在服务中存储数据(数组)?但我认为这是一个好方法,因为我也可以在其他组件中使用这个数组,而无需再次调用 http.get()。
标签: angular typescript angular4-httpclient