我试图使用@ 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(请注意,“ definitions”为空):

angular - 使用@ ngrx/data,获取“实体类型[x]没有EntityDefinition”-LMLPHP

我在这里做错了什么?
显然,在启动存储模块与依赖项注入将EntityCollectionServiceElementsFactory注入服务之间之间,出现了问题。

最佳答案

您有错别字:-

应该是entityMetadata

10-05 23:27