Я пытаюсь просто показать информацию о покупателе (класс модели), извлекая данные из базы данных с помощью веб-API в угловом приложении.Проблема в том, что данные, которые я получаю, не отображаются на HTML-странице, и я не могу найти решение для этого.Вот мой класс обслуживания:
import { Injectable } from '@angular/core';
import { HttpClient} from '@angular/common/http'
import {Buyer} from'./buyer.model'
import { Observable } from 'rxjs/Observable'
import 'rxjs/add/observable/throw'
import 'rxjs/add/operator/map'
import 'rxjs/add/operator/catch'
@Injectable()
export class OneBuyerService {
SelectedBuyer : Buyer;
constructor(private http : HttpClient) {}
postBuyer(buyer: Buyer)
{
return this.http.post('http://localhost:54632/api/Buyers',buyer);
}
getBuyers(): Observable<Buyer[]>
{
return this.http.get('http://localhost:54632/api/Buyers').map(res=>
{
let buyers = res;
return buyers;
})
.catch(this.handleError);
}
getBuyersbyID(id: string): Observable<Buyer[]>
{
return this.http.get('http://localhost:54632/api/Buyers/'+id).map(res => res).catch(this.handleError)
}
private handleError(error: any)
{
console.log('server error: ', error);
if(error instanceof Response)
{
let errMessage = '';
try
{
errMessage = error.statusText;
}
catch
{
errMessage = error.statusText;
}
return Observable.throw(errMessage);
}
return Observable.throw(error || 'ASP.net server error');
}
}
Вот мой класс компонентов:
import { Component,Input, OnInit, ChangeDetectionStrategy } from '@angular/core';
import { OneBuyerService } from '../shared/one-buyer.service';
import { Buyer } from '../shared/buyer.model';
@Component({
selector: 'app-buyer-list',
templateUrl: './buyer-list.component.html',
styleUrls: ['./buyer-list.component.css'],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class BuyerListComponent implements OnInit {
@Input() buyers : Buyer[];
constructor(private oneBuyerService : OneBuyerService) {}
loading:boolean = true;
buyersList : Buyer[];
ngOnInit() {
this.getBuyers();
// const me = this;
// me.oneBuyerService.getBuyers().subscribe(res =>
// {
// me.buyersList = res as Buyer[];
// this.loading = false;
// console.log(this.buyersList);
// });
}
getBuyers()
{
this.oneBuyerService.getBuyers()
.subscribe((buyers:Buyer[]) =>
{
this.buyersList = buyers;
this.loading = false;
},
(error: any) => console.log(error),
() => console.log(this.buyersList));
}
}
Вот мой HTML-код:
<div *ngIf="loading">
Loading, Please Wait ...
</div>
<div *ngIf="!loading">
<table class="table table-sm table-hover">
<tr>
<th>Full Name</th>
<th>Credit</th>
</tr>
<tbody *ngFor="let buyer of buyersList">
<tr>
<td>{{buyer.FullName}}</td>
<td>{{buyer.Credit}}</td>
<td><button class="btn btn-sm btn-outline-danger">X</button></td>
</tr>
</tbody>
</table>
</div>
Вот результат идаже если я удаляю часть «Загрузка», она все равно показывает пустую таблицу.