Данные NGRX: конструктор EntityServicesBase принимает только один аргумент
Я пытаюсь создать подкласс EntityServices для удобства класса приложения в соответствии с документацией NGRX/data по адресу https://ngrx.io/guide/data/entity-services
К сожалению, приведенный пример не работает с последней версией ngrx/data 8.5.2. Пример выглядит так:
@Injectable()
export class AppEntityServices extends EntityServicesBase {
constructor(
public readonly store: Store<EntityCache>,
public readonly entityCollectionServiceFactory: EntityCollectionServiceFactory,
// Inject custom services, register them with the EntityServices, and expose in API.
public readonly heroesService: HeroesService,
public readonly villainsService: VillainsService
) {
super(store, entityCollectionServiceFactory);
this.registerEntityCollectionServices([heroesService, villainsService]);
}
}
Когда я использую этот пример со своим кодом, я получаю следующую ошибку TypeScript:
Ошибка: (параметр) entityCollectionServiceFactory: EntityCollectionServiceFactory Ожидается 1 аргумент, но получено 2. ts(2554)
для строки, когда я вызываю конструктор родителей super(...)
Это выглядит как EntityServicesBase
конструктор s принимает только 1 аргумент типа EntityServicesElements
. Но как я могу создать свой собственный AppEntityService? Я не нашел ни одного рабочего примера.
1 ответ
Существует новый инъекционный объект, который вы можете предоставить сейчас, экземпляр EntityServicesElements
(импортировано из @ngrx/data
):
@Injectable()
export class AppEntityServices extends EntityServicesBase {
constructor(
entityServicesElements: EntityServicesElements,
// Inject custom services, register them with the EntityServices, and expose in API.
public readonly heroesService: HeroesService,
public readonly villainsService: VillainsService
) {
super(entityServicesElements);
this.registerEntityCollectionServices([heroesService, villainsService]);
}
}