Как создать частный сервис в Angular без круговой зависимости - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть ApiService, которым я не хочу делиться с компонентами.Он используется только внутри других сервисов.

NgModule

@NgModule({
  providers: [
    { provide: 'APIUrl', useValue: window.angularConfig.APIUrl },
    // ... declare secret imports like above
  ],
  exports: [
    FileService,
    FolderService,
  ],
})
export class ServicesModule { }

Частный сервис

@Injectable({
    providedIn: ServicesModule,
})
class ApiService {
  @Inject('secret') secret!: string;

  makeApiCall(url: string) { /* make HTTP call and send secret in header */}
}

Коммунальный сервис

@Injectable({
    providedIn: ServicesModule,
})
class PublicService {
  constructor(private api: ApiService ) {}

  getNames(url: string) {
    return this.api.makeApiCall('url/endpoint')
  }
}

Это решение дает мнеошибка, подобная этой: WARNING in Circular dependency detected: ... \ services \ apis.service.ts -> ... \ services.module.ts -> ... \ public.service.ts -> ... \ apis.service.ts`

...