На основании вашего console.log () мы можем видеть, что вы используете old Http, пожалуйста, обновитесь до HttpClient
. Http
устарела целую вечность! Вы можете обратиться к документации: HttpClient
Но вкратце .... Так что удалите HttpModule
и Http
и замените их на HttpClientModule
и HttpClient
.
В модуле приложения:
import { HttpClientModule } from '@angular/common/http';
// ....
imports: [
//...
HttpClientModule
]
создайте интерфейс (или класс), так как вы должны ввести свои данные:
// name interface how you want
export interface Examene {
id: number;
nombreExa: string;
// rest of properties here!
}
В вашем сервисе:
import { catchError } from 'rxjs/operators';
import { Observable } from 'rxjs';
import { HttpClient } from '@angular/common/http';
// ....
constructor(private httpClient: HttpClient) { }
getOneExamen(id): Observable<Examene> {
return this.httpClient.get<Examene>('....').pipe(
catchError(...)
)
}
, а затем компонент:
selectedExamen = <Examene>{};
examenClicked(exa) {
this.dataService.getOneExamen(exa.id).subscribe(
(data: Examene) => {
// with httpClient we don't need to parse json, so this works with HttpClient!
this.selectedExamen = data;
console.log('JSON DATA --->', data);
},
error => {
console.log(error);
}
);
}
НО
Если вы используете слишком старую версию angular и вам по какой-то причине приходится использовать Http
, вы пропускаетеdata.json()
из вашего кода, поэтому он не работает так, как ожидалось. До HttpClient
нам нужно было анализировать json по ответу, но теперь HttpClient делает это для нас. Так что в этом случае ваш код должен выглядеть так:
this.selectedExamen = data.json();