首页 > 解决方案 > 元组的 Angular HTTP 可观察对象

问题描述

在我的服务中,我有getTasks()方法:

getTasks(): Observable<TaskDto[]> {
  let url = `/tasks/gettasks`;
  return this.http
    .get(url)
    .subscribe(res => res);
}

这很好用,但现在我想读取响应标头并将其值与有效负载一起返回。因此,Observable<TaskDto[]>该方法应该返回可观察的元组,而不是:Observable<[TaskDto[],Number]>

getTasks(): Observable<[TaskDto[],Number]> {
  let url = `/tasks/gettasks`;
  return this.http
    .get<TaskDto[]>(url, {observe: 'response'})
    .subscribe(res => {
      let payload:TaskDto[] = res.body;
      let page:Number = Number(res.headers.get('X-Pagination'));
      let output = [payload, page];
    });
}

我能够读取标头值,但是如何Observable<[TaskDto[],Number]从中返回getTasks()

标签: ajaxangularobservable

解决方案


您应该map在您的getTasks方法中使用将您的 http 响应映射到您真正想要返回的元组。像这样的东西:

getTasks(): Observable<[TaskDto[],Number]> {
  let url = `/tasks/gettasks`;
  return this.http
    .get<TaskDto[]>(url, {observe: 'response'})
    .pipe(map(res => {
      let payload:TaskDto[] = res.body;
      let page:Number = Number(res.headers.get('X-Pagination'));
      let output: [TaskDto[],Number] = [payload, page];
      return output;
    }));
}

然后从调用组件订阅此方法。


推荐阅读