微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular 10:无法覆盖HttpClient

如何解决Angular 10:无法覆盖HttpClient

我正在尝试在HttpClient上使用继承并覆盖其所有常用方法

但是当我尝试覆盖请求方法时,Typescript指向错误

关于打字稿指出的错误有解释

因为当我覆盖GET / POST / PUT / DELETE / OPTIONS时没有错误

仅这种“请求”方法

enter image description here

解决方法

这只是黑客,但我想不出解决此问题的合适方法

所以只需以这种方式声明'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行为的常用方法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?