【发布时间】:2020-10-16 21:46:29
【问题描述】:
我正在尝试在组件加载时从后端 API 获取数据。
服务文件中的 API 调用
getFiles(): Observable<any> {
return this.httpClient.get<any>('http://localhost:5000/api/file');
}
在OnInit内的组件中订阅该服务
ngOnInit(): void {
this.postDataService.getFiles().subscribe( data => {
console.log('test', data);
});
}
它给出以下响应(200)。我没有收到任何错误
code: "EINVALIDSTATE"
message: "Requests can only be made in the LoggedIn state, not the SentClientRequest state"
如果我在 (click) 上调用相同的服务,它可以正常工作。
testClick(): void {
this.postDataService.getFiles().subscribe( data => {
console.log('test', data);
});
}
在ngOnInit 中调用服务是否有任何问题。如何让它发挥作用?
编辑
经过这么多故障排除后,我发现当我尝试直接加载子路由时出现错误。如果我加载主页然后单击链接以导航到任何组件,那么此 api 调用工作正常。
【问题讨论】:
-
你试过
OnChages吗? -
@Rohith 是的,我做到了。但没有运气
-
ngOnInit中的请求可能在服务器处于SentClientRequest状态时发送,而testClick中的请求在服务器处于LoggedIn状态时发送。在发送请求之前,您必须等待服务器处于LoggedIn状态。有没有办法让您在客户端跟踪loggedIn状态? -
@fridoo 经过这么多调试后,我发现当我尝试直接加载子路由时它会出错。如果我加载主页,然后单击链接导航到该组件,那么此调用工作正常
-
@fridoo 是的。我不是很理解。如果我在
app.componet.ts中调用相同的 api ,它工作正常。
标签: angular httpclient