遇到未定义的提供者!当多个服务互相呼叫时

时间:2019-04-23 06:50:48

标签: angular service angular-providers

我正在打一些棘手的电话。

我的模块名为NavigationModule,具有以下提供程序

  providers: [
    {provide: SYNCH_MAP_TOKEN, useFactory: SynchMapFactory },
    {provide: SYNCH_WAYPOINT_TOKEN, useFactory: SynchWaypointFactory },
    NavigationWaypointSyncherService,
    NavigationMapSyncherService
]

令牌和工厂文件夹写在另一个文件中。一切正常,直到我添加了其他两个服务

NavigationWaypointSyncherService,
NavigationMapSyncherService

在组件中,我将这两个服务称为

  constructor(private MapSyncherService: NavigationMapSyncherService,
              private WaypointSyncherService: NavigationWaypointSyncherService) { }

但是这两个服务正在调用提供令牌的服务

@Injectable({
  providedIn: NavigationModule
})
export class NavigationWaypointSyncherService {

  constructor(@Inject(SYNCH_WAYPOINT_TOKEN) private waypointSynchService: SynchronizatorService<SynchWaypointElement, SynchWaypointElementSubject>) {
    super(waypointSynchService);
  }

这将导致遇到未定义的提供者!循环依赖,因为它们需要构造函数中的服务。我希望这两个服务仅在此模块中可用,但是通过添加它们,我出现了此错误,并删除了它们

  

StaticInjectorError(AppModule)[NavigationIndexComponent->   NavigationMapSyncherService]:StaticInjectorError(平台:   核心)[NavigationIndexComponent-> NavigationMapSyncherService]:       NullInjectorError:没有NavigationMapSyncherService的提供程序!

。我不完全知道正确的方法是什么。

0 个答案:

没有答案