使用@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/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)