试图理解ngrx /数据实体数据服务示例here,其中显示“创建实体数据服务”。在显示该服务后,文档继续显示如何在组件中使用ngrx / data。我感兴趣的组件部分是这样的:
getHeroes() {
this.heroService.getAll();
}
文档指出getAll()
会发起HTTP请求,但是我不确定该请求实际在何处或如何发出。在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
分支,但找不到击中端点的内容。
例如用于调用http.get(${api}/heroes)
的{{1}}服务来获得所有英雄,但是上面的代码代替了该代码,那么这些调用在哪里发生?
我注意到getAll()
有一个EntityCollectionServiceBase
方法。但是,此服务的配置在哪里进行注册各自的端点?我确定我在这里缺少了一个非常简单的东西。
答案 0 :(得分:2)
从广义上讲,EntityCollectionServiceBase
分发动作,并通过EntityEffects
中的持久效果调用DefaultDataService
并映射响应使其成功/失败。参见Architecture Overview
因此,如果您要访问/转换从API返回的数据,则可以扩展/替换DefaultDataService
。您可以使用EntityDataService
注册自定义数据服务,该服务基本上是获取或创建数据服务的数据服务注册表(如果不存在,则使用默认值)。
答案 1 :(得分:0)
仅查看文档,看来DefaultDataService “由根路径和实体名称组成HTTP URL”
文档还建议您查看文档下面的Configuration部分,以指定您自己的url,以便与Entity DataService进行交互。
在玩示例应用程序时,您可能会在开发工具的“网络”选项卡中看到正在使用的生成端点。
我希望这会有所帮助。
答案 2 :(得分:0)
您可以在app.module中为其注册提供程序
providers: [
{ provide: DefaultDataServiceConfig, useValue: defaultDataServiceConfig } ]
export const defaultDataServiceConfig: DefaultDataServiceConfig = {
root: 'myapi/baseurl',
timeout: 1000 * 60, // request timeout }