相关疑难解决方法(0)

@ngrx/data - 如何扩展集合缩减器/替换数据服务调用结果的处理?

使用@ngrx/data我想以getWithQuery不同于默认值的方式处理API 调用的结果。

目前,如果这返回一个实体数组,则entityCache直接加载到.

到目前为止,我已经使用了概述中显示的标准模式:

export const entityMetadata: EntityMetadataMap = {
  PurchaseOrder: {}
};
Run Code Online (Sandbox Code Playgroud)
@Injectable({
  providedIn: "root"
})
export class PurchaseOrderService extends EntityCollectionServiceBase<
  PurchaseOrder
> {
  constructor(serviceElementsFactory: EntityCollectionServiceElementsFactory) {
    super("PurchaseOrder", serviceElementsFactory);
  }
}
Run Code Online (Sandbox Code Playgroud)

相反,我想处理以下 API 响应并entities像往常一样将加载到entityCache 中,getWithQuery但也将其粘贴total在我商店的其他地方。

{
    "entities": [{...}, {...}, ..., {...}],    // list of entities
    "total": 100
}
Run Code Online (Sandbox Code Playgroud)

如果返回此 API 响应,我自然会收到以下错误:

在此处输入图片说明

我的理解是,为每个提供EntityCollectionDataService接口和add / delete / getAll / getById / …

ngrx angular angular-ngrx-data

5
推荐指数
1
解决办法
1358
查看次数

覆盖 NGRX DefaultPersistenceResultHandler 的 handleSuccess

我在使用 @ngrx/data 时遇到了一些困难,希望你们中的一位天才可以帮助我。

我有一个实体集合,想存储一些额外的信息,以减少到服务器的往返次数并减少冗余负载。我有一个数据表,并且只想一次将一页加载到实体集合中,为了能够做到这一点,我想向我的集合中添加额外的元数据,以便我知道何时加载更多数据。例如,当我到达加载数据的末尾时加载更多(分页需要知道存在多少条记录以及加载了多少条记录)。

根据文档,我可以添加 additionalCollectionState 但需要某种方式来更新新的状态属性。

我想我会复制/粘贴他们作为基础的示例代码并修改它以反映我自己的属性..问题是我立即在 => Action上收到打字稿错误

通用类型“操作”需要 1 个类型参数

export class AdditionalPersistenceResultHandler  extends DefaultPersistenceResultHandler {

handleSuccess(originalAction: EntityAction): (data: any) => Action {
    const actionHandler = super.handleSuccess(originalAction);
    // return a factory to get a data handler to
    // parse data from DataService and save to action.payload
    return function(data: any) {
      const action = actionHandler.call(this, data);
      if (action && data && data.foo) {
        // save the data.foo to action.payload.foo
        (action as any).payload.foo = data.foo;
      } …
Run Code Online (Sandbox Code Playgroud)

ngrx angular

3
推荐指数
1
解决办法
454
查看次数

标签 统计

angular ×2

ngrx ×2

angular-ngrx-data ×1