Angular 每个模块具有不同的api端点

Angular 每个模块具有不同的api端点,angular,Angular,在Angular应用程序中,我使用注入令牌来配置后端API URL export ENDPOINT = new InjectionToken<string>('ENDPOINT'); 这真的很好。 现在我有一个例子,我有不同的模块,它本身应该有不同的端点。我目前正在研究如何配置此端点,以支持不同模块的多个端点。 作为约束,我不想为每个模块创建额外的端点。应该重用现有的一个 所需方式: providers: [ { provide: ENDPOINT, useVa

在Angular应用程序中,我使用注入令牌来配置后端API URL

export ENDPOINT = new InjectionToken<string>('ENDPOINT');
这真的很好。 现在我有一个例子,我有不同的模块,它本身应该有不同的端点。我目前正在研究如何配置此
端点
,以支持不同模块的多个端点。 作为约束,我不想为每个模块创建额外的
端点。应该重用现有的一个

所需方式:

providers: [
  {
    provide: ENDPOINT,
    useValue: [
      {endpoint: 'https://1', module: AppModule },
      {endpoint: 'https://2', moduel: BModule }
    ]
  }
这有可能吗

作为约束,我不想为每个模块创建额外的端点。应该重用现有的一个

我假设使用extra
ENDPOINT
表示类似于
ENDPOINT1
ENDPOINT2
。我的建议是使用多重选项

providers: [
  { provide: ENDPOINT, useValue: 'https://backend-1', multi: true },
  { provide: ENDPOINT, useValue: 'https://backend-2', multi: true }
使用此选项,您需要将注入值更改为数组

constructor(@Inject(ENDPOINT) endpoints: string[]) {}

这肯定是正确的方向。我只是想知道一个模块应该如何决定使用哪一个。您不能从另一个模块为一个模块提供令牌或服务。每个模块都需要为自己定义提供程序(或通过模块导入导入)。建议的方法将为单个模块提供多个端点。我以为你是那个意思。也许你想要像代理一样的东西?
constructor(@Inject(ENDPOINT) endpoints: string[]) {}