У меня возникли некоторые трудности с @ ngrx / data, и я надеюсь, что один из вас, Гениев, может мне помочь.
У меня есть коллекция сущностей, и я хотел бы сохранить дополнительную информацию, чтобы уменьшить поездки на сервер, а также уменьшить избыточную нагрузку. У меня есть таблица данных, и я хочу загрузить только одну страницу за раз в коллекцию сущностей, чтобы иметь возможность сделать это, я хотел бы добавить дополнительные метаданные в свою коллекцию, чтобы я знал, когда загружать больше данных. Например, когда я достигну конца загрузки загруженных данных больше (нумерация страниц должна была бы знать, сколько записей существует и сколько было загружено).
В соответствии с документацией я могу добавить AdditionalCollectionState, но мне нужен какой-то способ обновления свойств нового состояния.
Я подумал, что скопирую / вставлю пример кода, который у них есть в качестве основы и измените его так, чтобы он отражал мои собственные свойства .. проблема в том, что я немедленно получаю ошибку машинописного текста при действии => Action
Generi c type 'Action 'требуется аргумент (ы) одного типа
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;
}
return action;
};
}
}
Я также не уверен, что это правильный путь к go по этому поводу или я собираюсь сделать это слишком сложным, могу ли я " просто "как-то вручную обновить состояние дополнительной коллекции (в моем вызове dataservice getWithQuery ()) и, если да, то какой будет наилучший / рекомендуемый подход.
Приветствия и благодарности
Гари
ОБНОВЛЕНИЕ
После того, как Эндрю указал на мою очевидную ошибку импорта, я теперь реализовал обработчик результатов, но получил следующую ошибку
ERROR in Error during template compile of 'AdditionalPropertyPersistenceResultHandler'
Class AdditionalPropertyPersistenceResultHandler in D:/dev/angular/ng-vet/src/app/treatments/services/treatments-entity-result-handler.ts extends from a Injectable in another compilation unit without duplicating the decorator
Please add a Injectable or Pipe or Directive or Component or NgModule decorator to the class.
, которая не делает никаких смысл суть Дело в том, что stackblitz не имеет его, и он прекрасно работает.
my entityMetadataMap
const entityMetadata: EntityMetadataMap = {
TreatmentTemplate: {
entityDispatcherOptions: {
optimisticUpdate: true
}
},
Treatment: {
additionalCollectionState: {
totalRecords: 0
},
entityDispatcherOptions: {
optimisticUpdate: true
}
}
};
и провайдеров:
providers: [
TreatmentsDataService,
TreatmentEntityService,
TreatmentTemplateResolver,
TreatmentTemplatesDataService,
TreatmentTemplateEntityService,
{
provide: PersistenceResultHandler,
useClass: AdditionalPropertyPersistenceResultHandler
},
{
provide: EntityCollectionReducerMethodsFactory,
useClass: AdditionalEntityCollectionReducerMethodsFactory
}
]
Я в основном скопировал вставленные методы из стекаблиц ..
в ^ 8.0. 2 из angular и ^ 8.6.0 из ngrx это может быть проблемой?