首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NgRx数据DefaultDataServiceConfig

NgRx数据DefaultDataServiceConfig
EN

Stack Overflow用户
提问于 2020-05-11 14:35:05
回答 2查看 810关注 0票数 2

我刚开始在我的项目中使用NgRx Data,我搜索了几个小时,无法找到解决我所面临的问题的方法。

我试图通过这样使用DefaultDataServiceConfig来更改默认的调用根:

app.module.ts

代码语言:javascript
复制
export const defaultDataServiceConfig: DefaultDataServiceConfig = {
  root: `${environment.apiUrl}/`,
};

@NgModel({
   ...
   providers: [
      {
         provide: DefaultDataServiceConfig
         useValue: defaultDataServiceConfig
      }
   ]
});

environment.ts

代码语言:javascript
复制
export const environment = {
   ...
   apiUrl: 'https://my-api.com/v1',
};

但是,调用将转到localhost http://localhost:3000/client/list,而不是转到my-api.com https://my-api.com/v1/client/list

我遗漏了什么吗?我找不到任何例子,ngrx.io文档是一个糟糕的例子。

EN

回答 2

Stack Overflow用户

发布于 2020-09-21 21:06:08

我也面临着同样的问题。

检查DefaultDataService医生,它的构造函数中的第四个参数是可选的,默认情况下是未定义的。扩展该类时,创建自己的服务时,传递配置参数,如下所示:

代码语言:javascript
复制
@Injectable()
export class EmployersDataService extends DefaultDataService<Employer> {
  constructor(
    http: HttpClient,
    httpUrlGenerator: HttpUrlGenerator,
    config: DefaultDataServiceConfig
  ) {
    super('Employer', http, httpUrlGenerator, config);
  }
}

然后,在app.module.ts中提供的app.module.ts将工作。

票数 6
EN

Stack Overflow用户

发布于 2020-05-11 15:38:01

您应该在导入EntityDataModule的同一级别导入它。

代码语言:javascript
复制
@NgModule({
    declarations: [
        DataComponent,
    ],
    imports: [
        CommonModule,
        EntityDataModule.forRoot(entityConfig)
    ],
    providers: [
        {
            provide: DefaultDataServiceConfig,
            useValue: {
                root: environment.apiUrl,
            },
        }
    ],
    exports: [
        DataComponent,
    ],
})

如果出于任何原因,它不适合您-您可以提供您自己的HttpUrlGenerator,它解决了每个实体的urls。

代码语言:javascript
复制
export abstract class HttpUrlGenerator {
  abstract entityResource(entityName: string, root: string): string;

  abstract collectionResource(entityName: string, root: string): string;

  abstract registerHttpResourceUrls(
    entityHttpResourceUrls?: EntityHttpResourceUrls
  ): void;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61732261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档