ngrx/data 实体数据服务

skw*_*wny 6 ngrx angular angular-ngrx-data

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

getHeroes() {
  this.heroService.getAll();
}
Run Code Online (Sandbox Code Playgroud)

文档声明getAll()发起一个 HTTP 请求,但我不确定这个请求实际上是在哪里或如何发出的。在ngrx-data 存储库中。它指出用以下代码替换 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);
  }
}
Run Code Online (Sandbox Code Playgroud)

文档指出ngrx-data handles getting and saving our data for us。太好了,但我不知道获取数据是在哪里发生的。我克隆了存储库,检查了finish分支,但找不到到达端点的东西。

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

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

小智 1

只需查看文档,就会发现DefaultDataService “从根路径和实体名称组成 HTTP URL”

文档还建议查看文档下面的配置部分,以指定您自己的 Entity DataService 进行交互的 URL。

在使用示例应用程序时,您可能可以在开发工具的“网络”选项卡中看到正在使用的生成的端点。

我希望这有帮助。

  • api总是命中Angular的端口,如何用我自己的API命中? (2认同)