繁体   English   中英

Angular HTTP可观察到的元组

[英]Angular HTTP observable of tuple

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

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

效果很好,但是现在我想读取响应标头,并将其值与有效载荷一起返回。 因此,该方法应返回Observable<[TaskDto[],Number]>而不是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];
    });
}

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

您应该在getTasks方法中使用map来将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;
    }));
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM