无法从拦截器订阅数据

Unable to subscribe data from Interceptor

在我的 AppComponent.ts 文件中,我使用 HttpClient 进行了 HTTP GET 调用。

import { Component } from '@angular/core';
import { Observable, Subscriber, Unsubscribable } from 'rxjs';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'app';
  ob: Observable<any> = null;

  constructor(private httpClient: HttpClient) {

    httpClient.get("").subscribe((response) => {
      console.log(response);
    });
  }
}

然后我还有一个拦截器拦截 Http 调用和 returns 一些静态数据(例如缓存)。

import { Injectable } from "@angular/core";
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
import { Observable, of } from "rxjs";

@Injectable()
export class CustomHttpInterceptor implements HttpInterceptor {
    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<any> {
        return of({});
    }
}

但是 AppComponent.ts 文件中的订阅没有收到任何响应。事实上,订阅成功或错误功能甚至不会被命中。 也没有控制台错误。有人知道这里发生了什么吗?

注意 我已将 return 类型从 Observable<HttpEvent<any>> 更改为 Observable<any>,因为 TypeScript 无法将 Observable<{}> 转换为 Observable<HttpEvent<any>>

您的缓存响应需要为 HttpResonse, but to be more precise, it needs to be of type HttpEvent 类型,其中包括 class HttpResponse<T>:

const response = new HttpResponse<object>({
  body: {},
  status: 200
})

return of(response);

虽然这有点未经测试,但不确定 body 是否需要是可解析的 json 字符串才能使其正常工作:body: '{}',但这是供您尝试的。 :)