angular - ngrx/data 实体数据服务

标签 angular ngrx angular-ngrx-data

尝试理解ngrx/data实体数据服务示例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 为我们处理获取和保存数据。太好了,但我不知道获取数据是在哪里发生的。我克隆了该存储库,检查了 finish 分支,但找不到命中端点的内容。

例如该服务曾经调用 http.get(${api}/heroes) 来获取 getAll() 来获取所有英雄,但它被上面的代码替换了,所以哪里这些电话有发生吗?

我注意到 EntityCollectionServiceBase 有一个 getAll() 方法。但是该服务的配置在哪里进行以注册相应的端点呢?我确信我在这里错过了一些非常简单的东西。

最佳答案

广义上讲,EntityCollectionServiceBase 调度操作,并通过 EntityEffects 中的持久效果DefaultDataService 被调用并将响应映射到其成功/失败操作。请参阅Architecture Overview

因此,如果您想访问/转换从 API 返回的数据,您可以扩展/替换 DefaultDataService。您可以使用 EntityDataService 注册自定义数据服务,它基本上是获取或创建数据服务的数据服务注册表(如果不存在,则使用默认值)。

enter image description here

关于angular - ngrx/data 实体数据服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57051465/

相关文章:

javascript - 如何在 angular2 模块中使用 Soundcloud javascript sdk

angular - 编写自定义 ngrx 运算符并返回源可观察类型

Angular ngrx - 显示加载 gif

Angular 6 with NGRX 获得 "You provided ' undefined',其中预期有流。在调度时”

ngrx - 如何在 EntityCollectionService 上使用 setFilter

angular-ngrx-data - 获取 ngrx/data 的添加操作的结果或 HTTP 响应

angular - 生成 Angular 库时的循环依赖

angular - 如何使用angular 8将对象的动态数组分配给formgroup

angular - 当 ngrx/data 进行远程 api 调用时,如何避免 net::ERR_INSUFFICIENT_RESOURCES?

angular - PrimeNG Accordion 中的 ng 模板问题