首页 > 解决方案 > 如何在没有循环依赖的Angular中创建私有服务

问题描述

我有一个ApiService我不想与组件共享的东西。它仅在其他服务内部使用。

模块

@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.服务.ts`

标签: angulardependency-injection

解决方案


推荐阅读