Я вызываю функцию в моем сервисе из моего компонента.Когда я пытаюсь подписаться на возвращаемые данные, я получаю следующую ошибку в моей консоли:
ОШИБКА TypeError: this.entityService.getEntityType (...). Подписаться не является функцией
Похоже, что возвращение в моем операторе switch недопустимо.Если я верну эту функцию обратно в компонент, она будет работать нормально.Что я делаю не так?
// компонент
export class ProfileComponent implements OnInit {
pageConfigs: any;
facility: Facility;
param1: any;
entityConfig: any = {};
snapshot: RouterStateSnapshot;
constructor(
private modelService: ModelService,
private entityService: EntityService,
private pageConfigsService: PageConfigsService,
private route: ActivatedRoute,
private router: Router
) {}
ngOnInit() {
this.snapshot = this.router.routerState.snapshot;
console.log('snapshot', this.snapshot);
console.log('ngOnInit snapshot url', this.snapshot.url);
this.entityService.getEntityType(this.snapshot.url)
.subscribe(
response => {
this.param1 = response
console.log(this.param1);
}
);
console.log('endpoint', this.entityConfig.endpoint);
this.entityService.getEntities(this.entityConfig.endpoint)
.subscribe(
response => {
this.facility = this.modelService.assignModelFromResponse(this.entityConfig.model, response[0]);
console.log('facility', this.facility);
}
);
this.pageConfigsService.getPageConfigs('provider_search', 'profile')
.subscribe(
response => {
this.pageConfigs = response;
}
);
}
}
// сервис
export class EntityService {
entityConfig: any = {};
constructor(
private firebase: AngularFireDatabase,
private http: HttpClient
) { }
getEntities(entityType) {
return this.http.get(`http://localhost:3000/${entityType}`);
// return this.firebase.list('providers').valueChanges();
}
getEntityType(model) {
switch (model) {
case '/provider-search/profile/1?entity_type=provider':
this.entityConfig = {
name: 'providers',
model: Provider,
endpoint: 'providers'
};
break;
case '/provider-search/profile/1?entity_type=facility':
this.entityConfig = {
name: 'facilities',
model: Facility,
endpoint: 'facilities'
};
break;
case '/provider-search/profile/1?entity_type=pharmacy':
this.entityConfig = {
name: 'pharmacies',
model: Pharmacy,
endpoint: 'pharmacies'
};
break;
}
}
}