Я делаю сложные вызовы.
У меня есть модуль с именем 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);
}
Это делает неожиданного поставщика Encountered!Круговая зависимость, потому что им нужен сервис в конструкторе.Я хочу, чтобы эти два сервиса были доступны только в этом модуле, но, добавляя их, я получаю эту ошибку и удаляю их:
StaticInjectorError (AppModule) [NavigationIndexComponent -> NavigationMapSyncherService]: StaticInjectorError (Platform: core) [NavigationIndexComponent -> NavigationMapSyncherService]: NullInjectorError: Нет поставщика для NavigationMapSyncherService!
.Я не совсем понимаю, как правильно поступить.