我向我的REST API后端添加了分页。不,我必须更改我的角度服务。
api现在将返回json,如下所示:
{
"count": 0,
"next": null or url,
"previous": null or url,
"results": [..]
}
在更改之前,它只是一个对象数组。
这是我目前的服务,当然不能再使用了
list(): Observable<StudentCourse[]> {
let url = `${this.url}/student_courses/`;
return this.httpClient.get<StudentCourse[]>(url, { headers: this.headers })
.pipe(
catchError(this.handleError('GET student-course', []))
);
}
如何以最简单的方式将results
映射到对象数组(StudentCourse[]
)?并将next
和previous
的网址直接存储在服务中的变量中,以备后用。
答案 0 :(得分:1)
您可以创建JSON响应页面包装器接口:
interface IPageResult<T> {
count: number,
next: string | null,
previous: string | null,
results: T[]
}
然后用它替换原始数组:
list(): Observable<IPageResult<StudentCourse>> {
let url = `${this.url}/student_courses/`;
return this.httpClient.get<IPageResult<StudentCourse>>(url, { headers: this.headers })
.pipe(
catchError(this.handleError('GET student-course', []))
);
}
对于previous
和next
值,您可以在服务或使用者中随时随地访问它们。