NgRX的角度错误-实体类型[x]没有EntityDefinition



我正在使用一个从Angular 8到10的应用程序,似乎我搞砸了什么。我有几个解析器,其中一个给了我一个错误。我不知道造成问题的实体或数据服务有什么不同。我也不确定这个错误消息声称丢失了什么,它应该在哪里

Uncaught (in promise): Error: No EntityDefinition for entity type "makVersion".

这是有问题的功能模块。

// Standard Angular Items
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';

// Angular Material Items
import { MatButtonModule } from '@angular/material/button';
import { MatChipsModule } from '@angular/material/chips';
import { MatRippleModule } from '@angular/material/core';
import { MatExpansionModule } from '@angular/material/expansion';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatIconModule } from '@angular/material/icon';
import { MatInputModule } from '@angular/material/input';
import { MatPaginatorModule } from '@angular/material/paginator';
import { MatSelectModule } from '@angular/material/select';
import { MatSnackBarModule } from '@angular/material/snack-bar';
import { MatSortModule } from '@angular/material/sort';
import { MatTableModule } from '@angular/material/table';
import { MatTabsModule } from '@angular/material/tabs';
import { MatDividerModule } from '@angular/material/divider';
import { MatStepperModule } from '@angular/material/stepper';
import { MatListModule } from '@angular/material/list';
import { MatTooltipModule } from '@angular/material/tooltip';
import { MatCarouselModule } from '@ngmodule/material-carousel';


// Mak components
import { NavbarModule } from '../Shared/navbar/navbar.module';
import { ProjectsComponent } from './projects.component';

// Services
import { ProjectsService } from '../services/projects.service';

// NgRx Items
import { EntityDataService, EntityDefinitionService, EntityMetadataMap } from '@ngrx/data';

// Entity Service
import { makDesignEntityService } from '../services/entity/makDesign-entity.service';
import { makDesignDataService } from '../services/entity/makDesign-data.service';
import { signoffReqEntityService } from '../services/entity/signoffReq-entity.service';
import { signoffReqDataService } from '../services/entity/signoffReq-data.service';
import { makProjectEntityService } from '../services/entity/makProject-entity.service';
import { makProjectDataService } from '../services/entity/makProject-data.service';
import { makVersionEntityService } from '../services/entity/makVersion-entity.service';
import { makVersionDataService } from '../services/entity/makVersion-data.service';
import { designImagesReducer } from '../store/reducers';
import { StoreModule } from '@ngrx/store';

// The resolvers
import { MakDesignsResolver } from '../resolvers/makDesigns.resolver';
import { SignoffReqsResolver } from '../resolvers/signoffReqs.resolver';
import { MakProjectsResolver } from '../resolvers/makProjects.resolver';
import { MakVersionsResolver } from '../resolvers/makVersions.resolver';




// NgRX related metadata for NgData
const entityMetadata: EntityMetadataMap = {
makDesign: {
entityDispatcherOptions: {
optimisticUpdate: true
}
},
signoffReq: {
entityDispatcherOptions: {
optimisticUpdate: true
}
},
makProject: {
entityDispatcherOptions: {
optimisticUpdate: true
}
},
makVersion: {
entityDispatcherOptions: {
optimisticUpdate: true
}
},
};

@NgModule({
declarations: [
ProjectsComponent,
],
imports    : [
StoreModule.forFeature('designs', designImagesReducer),

NavbarModule,
MatButtonModule,
MatChipsModule,
MatExpansionModule,
MatFormFieldModule,
MatIconModule,
MatInputModule,
MatPaginatorModule,
MatRippleModule,
MatSelectModule,
MatSortModule,
MatSnackBarModule,
MatTableModule,
MatTabsModule,
MatDividerModule,
MatStepperModule,
MatListModule,
MatTooltipModule,
MatCarouselModule,
],
providers   : [
ProjectsService,
makDesignEntityService,
makDesignDataService,
signoffReqEntityService,
signoffReqDataService,
makProjectEntityService,
makProjectDataService,
makVersionEntityService,
makVersionDataService,
MakDesignsResolver,
MakProjectsResolver,
MakVersionsResolver,
SignoffReqsResolver,
]
})
export class ProjectsModule
{
constructor(
private eds: EntityDefinitionService,
private entityDataService: EntityDataService,
private makDesignDataService: makDesignDataService,
private signoffReqDataService: signoffReqDataService,
private makProjectDataService: makProjectDataService,
private makVersionDataService: makVersionDataService
){
eds.registerMetadataMap(entityMetadata);
entityDataService.registerService('makDesign', makDesignDataService);
entityDataService.registerService('signoffReq', signoffReqDataService);
entityDataService.registerService('makProject', makProjectDataService);
entityDataService.registerService('makVersion', makVersionDataService);
}
}

存储是app.module

StoreModule.forRoot(reducers, {
metaReducers,
runtimeChecks : {
strictStateImmutability: true,
strictActionImmutability: true,
strictActionSerializability: true,
strictStateSerializability:true
}
}),
StoreDevtoolsModule.instrument({maxAge: 25, logOnly: environment.production}),
EffectsModule.forRoot([]),
EntityDataModule.forRoot({}),
StoreRouterConnectingModule.forRoot({
stateKey: 'router',
routerState: RouterState.Minimal
}),
StoreModule.forRoot({}, {}),
StoreDevtoolsModule.instrument({ maxAge: 25, logOnly: environment.production })

这是解析器。";这里";则不输出日志。

/*
This is the resolver for the mak version models. The function that it
calls pulls down all of the versions created by a user.
*/

// Common Angular Items
import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';

// RxJS Items
import { Observable } from 'rxjs';
import { filter, first, map, tap } from 'rxjs/operators';

// The mak version entity service
import { makVersionEntityService } from '../services/entity/makVersion-entity.service';

@Injectable()
export class MakVersionsResolver implements Resolve<boolean> {
constructor(private makVersionEntityService: makVersionEntityService) {
}
resolve(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> {
console.log('Here');
return this.makVersionEntityService.loaded$
.pipe(
tap(loaded => {
if (!loaded) {
this.makVersionEntityService.getAll();
}
}),
filter(loaded => !!loaded),
first()
);
}
}

因此,很明显,当我通过CLI添加组件时,它将这些组件添加到主应用程序,而不是功能应用程序。我一定错过了这一点,并手动将组件添加到功能应用程序中。第二个声明的存在导致了导致此错误的一些问题。我的猜测是,它试图解析与主应用程序中的这些组件相关的解析器,但显然没有包含实体。

相关内容

最新更新