#angular #httpclient
#угловой #httpclient
Вопрос:
Я пытаюсь извлечь данные из серверного 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 работает нормально.
Комментарии:
1. Вы пробовали делать с
OnChages
?2. @Rohith Да, я это сделал. Но не повезло
3. Запрос in
ngOnInit
, вероятно, отправляется, когда сервер находится вSentClientRequest
состоянии, в то время как запрос intestClick
отправляется, когда сервер находится вLoggedIn
состоянии. Вы должны дождаться, пока сервер будет вLoggedIn
рабочем состоянии, прежде чем отправлять запрос. Есть ли у вас способ отслеживатьloggedIn
состояние на стороне клиента?4. @fridoo После стольких отладок я обнаружил, что он выдает ошибку, когда я пытаюсь напрямую загрузить дочерние маршруты. Если я загружаю домашнюю страницу, а затем нажимаю на ссылку, чтобы перейти к этому компоненту, то этот вызов работает нормально
5. @fridoo Да. Я совершенно ничего не понимаю. Если я добавлю тот же вызов API
app.componet.ts
, он будет работать нормально.
Ответ №1:
Запросы BTW могут выполняться только в состоянии LoggedIn, а не в состоянии SentClientRequest это не ошибка angular. это ошибка на стороне сервера
Пожалуйста, посмотрите на tediousjs.github.io
Комментарии:
1. да, я знаю. Но он работает с щелчком мыши, поэтому путаница