Oud*_*and 3 typescript angular
我services想在Angular2应用程序中使用两个.当我尝试使用GuideServicein GlobalsService和GlobalsServicein时,GuideService我收到此错误:
zone.js:392
Unhandled Promise rejection: (SystemJS) Can't resolve all parameters for GuideService: (?, ?).
Error: Can't resolve all parameters for GuideService: (?, ?).
at CompileMetadataResolver._getDependenciesMetadata
我的服务:
export class GlobalsService {
[...]
constructor(private guideService: GuideService) { }
[...]
}
export class GuideService {
[...]
constructor(private globals: GlobalsService) { }
[...]
}
Run Code Online (Sandbox Code Playgroud)
是否有其他方式以这种方式使用服务?
编辑
我有这个GlobalsModule导入我的AppModule:
import {NgModule} from "@angular/core";
import {CommonModule} from "@angular/common";
import {GlobalsService} from './globals.service'
@NgModule({
providers: [GlobalsService],
imports: [CommonModule]
})
export class GlobalsModule {
}
Run Code Online (Sandbox Code Playgroud)
我个人不赞成这种循环依赖,也许这应该由注入这两种服务的第三种服务来处理.无论如何,我确实认为你想要做的是使用@Injectwith forwardRef,两者都存在于"@angular/core"包中:
export class GlobalsService {
[...]
constructor(
@Inject(forwardRef(() => GuideService))
private guideService: GuideService
) {}
[...]
}
export class GuideService {
[...]
constructor(
@Inject(forwardRef(() => GlobalsService))
private globals: GlobalsService
) {}
[...]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2394 次 |
| 最近记录: |