Как вытянуть данные из json через angular в html шаблон?

В 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 и отображенных с использованием интерполяции.