【发布时间】:2020-10-11 09:22:15
【问题描述】:
我在 ngOnInit() 中调用了 api,我想在 ngOnInit() 中对来自 api 的数据做更多的事情。
但是当我尝试 console.log() 时,我的数据未定义,无法处理更多。当我从服务订阅数据时,console.log() 在 getUsers() 方法中使用相同的数据时,我的数组包含 json 数据。 API 响应:
{"items":[{"id":"1","name":"Adam","age":20},{"id":"2","name":"Cris","age":32}]}
UserResults 是我的整个 JSON。而且我只需要用户数组中的用户而不是项目。
service.ts
public getUsers(): Observable<UserResults> {
return this.httpClient.get<UserResults>(baseURL);
}
组件.ts
export class SidebarComponent implements OnInit {
usersResult: UserResults;
users: Users[];
constructor(private dataService: DataService) { }
ngOnInit(): void {
this.getUsers();
// shouldn't be users array available ???
console.log(this.getUsers()) // undefined
///more calculations
}
private getUsers() {
this.dataService.getUsers().subscribe(
data => {
this.users = data.items;
console.log(this.getUsers()) // correct data in json array
}
)
}
}
我应该如何最好地处理它?
【问题讨论】:
-
我可以知道你为什么想要关于 ngOninit 的数据吗?
-
当我进入我的网站时我需要数据并且我在那里进行第一次 api 调用,我也需要对数据进行一些操作。我应该使用其他钩子吗?
-
你可以在你的服务中使用行为主体。
标签: angular typescript