Angular HttpClient 是 Angular 中的一个 HTTP 客户端模块,允许您发送 HTTP 请求并获取响应。在使用 observe 选项时,可能会遇到没有返回类型 1 的问题。这通常是由于拦截器未正确使用所致。
要解决此问题,请确保您的拦截器返回正确的类型。以下是一个示例拦截器,它会将响应转换为 JSON 对象并返回:
import { Injectable } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
@Injectable()
export class TransformInterceptor implements HttpInterceptor {
intercept(req: HttpRequest, next: HttpHandler): Observable> {
return next.handle(req).pipe(
map(event => {
if (event instanceof HttpResponse) {
return event.clone({ body: JSON.parse(event.body) });
}
return event;
})
);
}
}
在您的主模块中,将此拦截器添加到您的 HTTP 客户端的拦截器列表中:
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { TransformInterceptor } from './transform.interceptor';
@NgModule({
imports: [
HttpClientModule
],
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: TransformInterceptor, multi: true }
]
})
export class AppModule { }
这将确保您的观察事件正确返回类型 1。