我有一个Web服务,该服务返回对象数组(给定Entry
的{{1}}的抽象数组)以及分页数据。
在Angular中,我尝试将数据恢复为Site
,还将分页数据恢复为
我有一个错误,但与此链接
Observable<MyObj>
1)如何消除此错误,并且
2)是在客户端处理分页数据的正确方法吗?
答案 0 :(得分:0)
您可以定义第二个接口,以更好地定义您要返回的内容的形状:
export interface EntryPlus {
entries: Entry[];
pager: Pager
}
这定义了方法返回的数据。您可能想要一个更好的名字。 :-)
然后更改方法以返回Observable<EntryPlus>
findEntries(
siteId: number, filter = '', sortOrder = 'asc', sortActive= 'date',
pageIndex = 0, pageSize = 10): Observable<EntryPlus> {
return this.http.get(`${this.API_URL}/api/entries`, {
params: new HttpParams()
.set('siteId', siteId.toString())
.set('filter', filter)
.set('sortOrder', sortOrder)
.set('sortActive', sortActive)
.set('pageIndex', pageIndex.toString())
.set('pageSize', pageSize.toString()),
observe: 'response'
}).pipe(
map((res: any) => {
// I assume the following two lines from your original code are correct?
const pager = JSON.parse(res.headers.get('X-Pagination'));
const playload: { [id: number]: Entry } = res.body;
// Map them into the EntryPlus structure
return {
entries: payload,
pager: pager
}
})
);
}
注意:未检查语法!
然后,调用代码可以从返回的值中拉出数组。如果您想用一些调用代码来更新您的问题,我可以提供一个示例。
类似这样的东西:
ngOnInit(): void {
this.entryService.findEntries().subscribe(
data => {
this.entries = data.entries; // This is now the array you need
this.pager = data.pager; // This is now the pager info you need
},
error => this.errorMessage = <any>error
);
}
此代码调用findEntries
方法,然后将返回值分为两部分:Entries[]
和pager
。