Я пытаюсь использовать @ ngrx / data для создания простой службы в Angular и получаю сообщение об ошибке EntityDefinition for entity type "Position".
при запуске компонента.
Моя EntityMetadataMap такова:
const entityMetaData: EntityMetadataMap = {
Employee: {},
Position: {}
};
const pluralNames = { Employee: 'Employees', Position: 'Positions' };
export const entityConfig = {
entityMetaData,
pluralNames,
};
а мой модуль магазина таков:
@NgModule({
declarations: [],
imports: [
StoreModule.forRoot({}),
EffectsModule.forRoot([]),
StoreDevtoolsModule.instrument(),
EntityDataModule.forRoot(entityConfig),
],
providers: [
{provide: DefaultDataServiceConfig, useValue: defaultDataServiceConfig},
PositionsDataService
]
})
export class ItwStoreModule {
constructor() {
console.log(entityConfig);
}
}
и моя служба данных для позиции такова:
@Injectable({ providedIn: 'root' })
export class PositionsDataService extends EntityCollectionServiceBase<Position> {
constructor(serviceFactory: EntityCollectionServiceElementsFactory) {
super('Position', serviceFactory);
}
}
Я могу поставить точку останова в настройке модуля и в EntityDataModule, и я вижу, что определение сущности существует и устанавливается правильно (как часть EntityDataModule.forRoot(entityConfig)
.
Но когда конструктор службы запускается и вызывает super(...)
в отладчике, я вижу, что в переданном EntityCollectionServiceElementsFactory
нет EntityDefinitions (обратите внимание, что «определения» пусты):
Что я здесь делаю не так? Очевидно, что между запуском модуля хранилища и внедрением зависимостей EntityCollectionServiceElementsFactory
в службу что-то идет не так.