NgRx数据自定义URL生成器

时间:2020-05-20 05:05:15

标签: angular ngrx angular-ngrx-data

我是NgRx的新手。经过初步研究,NgRx尤其是NgRx数据包似乎非常适合我正在研究的应用程序。需要注意的是,我们的实体受到具有非常规路线的微服务的支持。

每个实体都有自己的微服务,并且所有操作都通过URL参数中的基本记录ID进一步隔离。

[microServiceRoute]/[baseRecordId]/entityEndpoint

我有一个查找路线的表,但是baseRecordId将保存在商店中。 NgRx数据文档有一个简单的示例,概述了URLGenerator的替换。

如何在每个实体的基础上指定我的微服务路由,同时还要从商店读取此生成器?可以轻松做到这一点吗?还是应该从每个实体的定制服务角度来解决这个问题?

https://ngrx.io/guide/data/extension-points#replace-the-httpurlgenerator

1 个答案:

答案 0 :(得分:1)

完全正确,您需要实现自己的HttpUrlGenerator类,该类为所需的端点提供服务,并在导入EntityDataModule.forRoot的模块中提供

providers: [
  {
    provide: HttpUrlGenerator,
    useClass: MyApiHttpUrlGenerator,
  },
],

当前有一个配置密钥可以更改API的前缀,但不允许为每个实体指定端点:https://ngrx.io/guide/data/entity-dataservice#provide-a-custom-configuration

const defaultDataServiceConfig: DefaultDataServiceConfig = {
  root: 'https://my-api-domain.com:8000/api/v1',
}

@NgModule({
  providers: [{
    provide: DefaultDataServiceConfig,
    useValue: defaultDataServiceConfig,
  }]
})