我在我的应用程序中使用子组件的延迟加载策略.在应用程序的顶层,我有自定义HTTP提供程序,它拦截所有ajax调用.
providers:[{ provide: Http,useFactory: (backend: XHRBackend,defaultOptions: RequestOptions,cookieService: CookieService) => new CustomHttp(backend,defaultOptions,cookieService),deps: [XHRBackend,RequestOptions,CookieService] }]
我的延迟加载模块不会影响此自定义提供程序.有没有办法为他们提供?没有在component.module文件的providers属性中重复代码.谢谢!
我用
@SkipSelf()修复了它.
每个延迟加载的模块都有自己的注入器,因此它对应用程序级别中的扩展Http提供程序一无所知.当您在服务中注入Http提供程序时(在延迟加载的模块中),angular正在尝试在模块的注入器中找到Http提供程序…并从’@ angular / http’中找到原始提供程序.但是您需要找到在应用程序级别内“可见”的扩展Http提供程序.
所以尝试在构造函数中在Http之前添加@SkipSelf():
原文链接:https://www.f2er.com/angularjs/141110.html每个延迟加载的模块都有自己的注入器,因此它对应用程序级别中的扩展Http提供程序一无所知.当您在服务中注入Http提供程序时(在延迟加载的模块中),angular正在尝试在模块的注入器中找到Http提供程序…并从’@ angular / http’中找到原始提供程序.但是您需要找到在应用程序级别内“可见”的扩展Http提供程序.
所以尝试在构造函数中在Http之前添加@SkipSelf():
import { SkipSelf } from '@angular/core'; constructor(@SkipSelf() private http: Http) { }