В Angular есть несколько способов вытянуть данные из JSON и отобразить их в HTML-шаблоне. Один из самых распространенных способов - это использование директивы *ngFor и связывание данных с помощью интерполяции.
Первым делом нам понадобится сервис для получения данных из JSON. Для этого создадим новый сервис с помощью команды Angular CLI:
ng generate service data
Откроется новый файл data.service.ts в папке src/app. В этом файле мы можем написать код для получения данных из JSON. Допустим, у нас есть файл data.json в папке assets с следующим содержимым:
[ { "name": "John", "age": 25 }, { "name": "Jane", "age": 30 }, { "name": "Bob", "age": 35 } ]
В data.service.ts мы можем использовать HttpClient из @angular/common/http для загрузки данных из файла data.json:
import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; @Injectable({ providedIn: 'root' }) export class DataService { constructor(private http: HttpClient) { } getData() { return this.http.get('assets/data.json'); } }
Теперь мы можем использовать этот сервис в нашем компоненте.
Откроем файл app.component.ts и включим DataService с помощью Dependency Injection:
import { Component } from '@angular/core'; import { DataService } from './data.service'; @Component({ selector: 'app-root', template: ` <ul> <li *ngFor="let person of people"> {{ person.name }}, {{ person.age }} </li> </ul> `, styleUrls: ['./app.component.css'] }) export class AppComponent { people: any[]; constructor(private dataService: DataService) { } ngOnInit() { this.dataService.getData().subscribe(data => { this.people = data; }); } }
В этом компоненте мы подписываемся на результат getData() и присваиваем его массиву people. Затем мы можем использовать *ngFor для отображения данных в HTML-шаблоне.
Важно отметить, что мы должны импортировать HttpClientModule в файле app.module.ts, чтобы использовать HttpClient:
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { HttpClientModule } from '@angular/common/http'; import { AppComponent } from './app.component'; import { DataService } from './data.service'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, HttpClientModule ], providers: [DataService], bootstrap: [AppComponent] }) export class AppModule { }
Теперь при запуске Angular-приложения вы увидите список персон, извлеченных из файла data.json и отображенных с использованием интерполяции.