Mik*_*kki 7 angular2-providers angular
我在我的应用程序中使用子组件的延迟加载策略.在应用程序的顶层,我有自定义HTTP提供程序,它拦截所有ajax调用.
providers:[{
provide: Http,
useFactory: (backend: XHRBackend, defaultOptions: RequestOptions, cookieService: CookieService) => new CustomHttp(backend, defaultOptions, cookieService),
deps: [XHRBackend, RequestOptions, CookieService]
}]
Run Code Online (Sandbox Code Playgroud)
我的延迟加载模块不会影响此自定义提供程序.有没有办法为他们提供?没有providers在component.module文件中的属性中重复代码.谢谢!
小智 3
我已经用@SkipSelf()修复了它。每个延迟加载的模块都有自己的注入器,因此它不知道应用程序级别内的扩展 Http 提供程序的任何信息。当您在服务中(在延迟加载的模块中)注入 Http 提供程序时,Angular 正在尝试在模块的注入器中查找 Http 提供程序...并从“@Angular/http”中找到原始提供程序。但是您需要找到在应用程序级别“可见”的扩展 Http 提供程序。因此,尝试在构造函数中的 Http 之前添加 @SkipSelf() :
import { SkipSelf } from '@angular/core';
constructor(@SkipSelf() private http: Http) {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
931 次 |
| 最近记录: |