Данные 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]);
  }
}
Другие вопросы по тегам