У меня есть компонент с именем customer
, который используется для отображения некоторых данных с использованием api .
Для вызова api
я создал файл с именем services.ts
и это КОД выглядит следующим образом:
services.ts
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { IPosts } from './models';
@Injectable()
export class Service {
constructor(private http: HttpClient) {}
public getContactList(): Promise<IPosts> {
const apiUrl: string = 'https://jsonplaceholder.typicode.com/posts'; // dummy API
return this.http.get<IPosts>(apiUrl).toPromise();
}
}
Как показано в коде interface
(IPosts), Я объявил этот интерфейс (i, e IPosts) в файле с именем models.ts
.Код выглядит следующим образом:
export interface IPosts {
userId: number;
id: number;
title: string;
body: string;
}
Теперь я отображаю эти api's
данные в customer
компонент выглядит так:
customer.html
<div class="container">
<h3>Blog Posts:</h3>
<div class="blogPost " *ngFor = "let post of posts">
<p>{{post.title}}</p>
<p>{{post.body}}</p>
<hr>
</div>
</div>
customer.ts
import { Component, OnInit } from '@angular/core';
import { Service } from '../service';
import { map } from 'rxjs/operators';
import { IPosts } from '../models';
@Component({
selector: 'app-customer',
templateUrl: './customer.component.html',
styleUrls: ['./customer.component.css']
})
export class CustomerComponent implements OnInit {
constructor(public customersServiceList: Service) {}
public async ngOnInit(): Promise<void> {
const posts : IPosts = await this.customersServiceList.getContactList();
console.log(posts);
}
}
Я вижу данные API в консоли:
Но не удается отобразить его в файле .html
.Что не так в названии api
.
Вот stckblitz DEMO