Angular 2 - 服务中的服务

Oud*_*and 3 typescript angular

services想在Angular2应用程序中使用两个.当我尝试使用GuideServicein GlobalsServiceGlobalsServicein时,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)

Pie*_*Duc 5

我个人不赞成这种循环依赖,也许这应该由注入这两种服务的第三种服务来处理.无论如何,我确实认为你想要做的是使用@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)

  • 我忘记了'forwardRef`.这个答案比我的好. (2认同)