Ngrx/数据实体数据服务 [英] ngrx/data entity data service

查看:16
本文介绍了Ngrx/数据实体数据服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试理解ngrx/data实体数据服务示例here,其中显示"创建实体数据服务"。在展示了该服务之后,文档继续展示如何在组件中使用ngrx/data。我感兴趣的组件部分如下:

getHeroes() {
  this.heroService.getAll();
}

文档说明getAll()发起了一个HTTP请求,但我不确定该请求实际上是在哪里发出的,或者是如何发出的。在ngrx-data repo中。它声明用以下代码替换HermerService:

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。这很好,但我不知道这些数据是从哪里获得的。我克隆了repo,签出了finish分支,但找不到到达终结点的内容。

例如,用于调用http.get(${api}/heroes)forgetAll()以获取所有英雄的服务,但已被上面的代码替换,那么这些调用发生在哪里?

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

推荐答案

一般而言,EntityCollectionServiceBase调度操作,并通过EntityEffects中的Persistent效果调用DefaultDataService并将响应映射到其成功/失败操作。请参见Architecture Overview

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

这篇关于Ngrx/数据实体数据服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆