#html #json #angular #typescript #http
Вопрос:
Я написал следующий код, чтобы получить фиктивные данные здесь:
export class AppComponent {
jsonPosts: any = [];
constructor(private httpClient: HttpClient) { }
OnInit() {
this.getJsonPosts();
}
getJsonPosts(): any {
return this.httpClient.get("https://jsonplaceholder.typicode.com/posts")
.subscribe(response => {
console.log(response);
this.jsonPosts = response;
});
}
Я также написал следующий код, чтобы отобразить их в моем HTML-шаблоне:
<ul *ngFor="let i of jsonPosts">
<li>{{i.userId}}</li>
<li>{{i.id}}</li>
<li>{{i.title}}</li>
<li>{{i.body}}</li>
</ul>
Однако сетевая активность вообще отсутствует, и поэтому ничего не отображается…
Что я здесь делаю не так?
Комментарии:
1. Именно поэтому руководство по стилю Angular рекомендует реализовать интерфейсы жизненного цикла: angular.io/guide/styleguide#implement-lifecycle-hook-interfaces .
Ответ №1:
Вы не вызываете OnInit
метод. Если вы хотите, чтобы angular lifecycle вызывал ваш метод, ваш компонент должен реализовать OnInit
интерфейс с ngOnInit
методом.
Подробнее здесь.
Итак, код вашего компонента должен выглядеть следующим образом:
export class AppComponent implements OnInit {
jsonPosts: any = [];
constructor(private httpClient: HttpClient) { }
ngOnInit(): void {
this.getJsonPosts();
}
getJsonPosts(): any {
return this.httpClient.get("https://jsonplaceholder.typicode.com/posts")
.subscribe(response => {
console.log(response);
this.jsonPosts = response;
});
}