问题描述
我正在尝试在HttpClient上使用继承并覆盖其所有常用方法
关于打字稿指出的错误有解释
因为当我覆盖GET / POST / PUT / DELETE / OPTIONS时没有错误
仅这种“请求”方法
解决方法
这只是黑客,但我想不出解决此问题的合适方法
所以只需以这种方式声明'request'方法,我就可以删除该错误:
request: any = (method: string,url: string,options?: any): Observable<any> => {
if (this.authService.config.activateInterception) {
return this.requestWithRetry(method,url,options);
}
else {
return super.request(method,options);
}
}
,
这贯穿ng build
@Injectable()
export class FoobarHttpClient extends HttpClient {
request( method: string,options?: {
body?: any;
headers?: HttpHeaders | {
[header: string]: string | string[];
};
params?: HttpParams | {
[param: string]: string | string[];
};
observe?: 'body' | 'events' | 'response'; // == HttpObserve;
reportProgress?: boolean;
responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
withCredentials?: boolean;
} ): Observable<any> {
return super.request( method,options );
}
}
我的项目仍在Angular 9上,并且http.d.ts没有公开内部使用的HttpObserve
(也许现在已在Angular 10中导出,我没有检查)。
如果您尚未这样做,建议您查看ng HttpInterceptor
。使用拦截器是自定义HttpClient行为的常用方法。