【发布时间】:2019-02-22 21:39:40
【问题描述】:
我正在尝试通过使用 Angular 应用程序上的 Web 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>
【问题讨论】:
-
我编辑了图片,第一张是旧的,抱歉。
-
你能在
subscribe上登录并检查`this.buyersList = Buyer;` 是否工作正常