typescript - NGRX data: EntityServicesBase-konstruktören accepterar endast ett argument
Jag försöker skapa en subklass EntityServices för applikationsklassens bekvämlighet enligt NGRX/data-dokumentationen på https://ngrx.io/guide/data/entity-services#sub-class-entityservices-for-application-class-convenience
Tyvärr verkar det angivna exemplet inte fungera med den senaste versionen av ngrx/data 8.5.2. Exemplet ser ut så här:
@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]);
}
}
När jag använder exemplet med min kod får jag följande TypeScript-fel:
Fel: (parameter) entityCollectionServiceFactory: EntityCollectionServiceFactory Förväntade 1 argument, men fick 2. ts(2554)
för raden när jag kallar föräldrakonstruktorn super(...) Det ser ut som EntityServicesBase:s konstruktor bara accepterar 1 argument av typen EntityServicesElements. Men hur kan jag skapa min egen AppEntityService? Jag kunde inte hitta något fungerande exempel.
Svar #1
Det finns ett nytt injicerbart objekt du kan tillhandahålla nu, en instans av EntityServicesElements (importerat från @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]);
}
}
