0

如果我想将 httpClient 包装在一个包装类中以提供额外的功能。如何直接从 HttpClient 获取方法返回类型。我不想为返回类型重新创建所有这些类型重载。默认情况下,我将丢失所有类型的信息。

class myhttp{
    constructor(private _http:HttpClient){}
    get(url,options){
      return _http.get(url,options).pipe(this.customOperator())
    }
}
4

1 回答 1

1

我通过扩展 httpclient 类做了这样的事情

import { Injectable } from '@angular/core';
import { HttpClient } from "@angular/common/http";
import { Observable } from "rxjs";
import {tap} from "rxjs/operators"


@Injectable({
  providedIn:"root"
})
export class HttpService extends HttpClient {

  public get(url , options?:any): Observable<any> {
    // do something magical ‍♂️
    return super.get(url,options).pipe(tap(console.log))
  }
}

注入HttpService

export class AppComponent  {
  name = 'Angular';

  constructor(private http:HttpService) { }

  ngOnInit(){
    this.http.get('https://jsonplaceholder.typicode.com/posts').subscribe(console.log);
  }

stackblitz 演示

于 2019-02-28T06:20:26.580 回答