如何为所有延迟加载模块提供自定义提供程序

2024-01-06

我在我的应用程序中使用子组件的延迟加载策略。在应用程序的顶层,我有自定义 HTTP 提供程序来拦截所有 ajax 调用。

    providers:[{
        provide: Http,
        useFactory: (backend: XHRBackend, defaultOptions: RequestOptions, cookieService: CookieService) => new CustomHttp(backend, defaultOptions, cookieService),
        deps: [XHRBackend, RequestOptions, CookieService]
    }]

我的延迟加载模块不会影响此自定义提供程序。有没有办法也为他们提供?没有重复的代码providerscomponent.module 文件中的属性。谢谢你!


我已经修复了它@SkipSelf() https://angular.io/api/core/SkipSelf。 每个延迟加载的模块都有自己的注入器,因此它不知道应用程序级别内的扩展 Http 提供程序的任何信息。当您在服务中(在延迟加载的模块中)注入 Http 提供程序时,Angular 正在尝试在模块的注入器中查找 Http 提供程序...并从“@Angular/http”中找到原始提供程序。但是您需要找到在应用程序级别“可见”的扩展 Http 提供程序。 因此,尝试在构造函数中的 Http 之前添加 @SkipSelf() :

import { SkipSelf } from '@angular/core';

constructor(@SkipSelf() private http: Http) {
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为所有延迟加载模块提供自定义提供程序 的相关文章

随机推荐