尝试理解ngrx/data实体数据服务示例here,其中显示“创建实体数据服务”。在展示了该服务之后,文档继续展示了如何在组件中使用ngrx/data。我感兴趣的组件部分是:
getHeroes() {
this.heroService.getAll();
}文档指出getAll()会发起一个超文本传输协议请求,但我不确定这个请求实际上是在哪里发出的,或者是如何发出的。在ngrx-data repo中。它声明用以下代码替换heroService:
import { Injectable } from '@angular/core';
import {
EntityCollectionServiceBase,
EntityCollectionServiceElementsFactory
} from 'ngrx-data';
import { Hero } from '../core';
@Injectable({ providedIn: 'root' })
export class HeroService extends EntityCollectionServiceBase<Hero> {
constructor(serviceElementsFactory: EntityCollectionServiceElementsFactory) {
super('Hero', serviceElementsFactory);
}
}文档中写着ngrx-data handles getting and saving our data for us。这很好,但我不知道这些数据是从哪里获得的。我克隆了存储库,检查了finish分支,但找不到命中端点的内容。
例如,用于调用getAll()的http.get(${api}/heroes)来获取所有英雄的服务,但被上面的代码所取代,那么这些调用发生在哪里呢?
我注意到EntityCollectionServiceBase有一个getAll()方法。但是,在何处配置此服务以注册相应的端点呢?我确信我在这里遗漏了一些非常简单的东西。
发布于 2020-03-03 00:55:38
一般而言,EntityCollectionServiceBase调度操作,并通过EntityEffects中的persist effect调用DefaultDataService,并将响应映射到其成功/失败操作。请参阅Architecture Overview
因此,如果您想要访问/转换从API返回的数据,则需要扩展/替换DefaultDataService。您可以使用EntityDataService注册您的自定义数据服务,它基本上是获取或创建数据服务的数据服务的注册表(如果不存在,则使用默认值)。

发布于 2019-07-16 15:01:34
只需查看文档,就会发现DefaultDataService“由根路径和实体名称组成HTTP”
文档还建议查看文档中下面的Configuration部分,以便为要与之交互的实体DataService指定您自己的urls。
在使用示例应用程序时,您可能会在开发工具的Network选项卡中看到正在使用的生成的端点。
我希望这能帮到你。
发布于 2019-10-03 01:27:07
您可以在app.module中为其注册提供程序
providers: [
{ provide: DefaultDataServiceConfig, useValue: defaultDataServiceConfig } ]
export const defaultDataServiceConfig: DefaultDataServiceConfig = {
root: 'myapi/baseurl',
timeout: 1000 * 60, // request timeout }https://stackoverflow.com/questions/57051465
复制相似问题