Я впервые создаю приложение для хранения, обновления, просмотра и удаления профилей клиентов. Я следил за Angular-туром по героям, чтобы создать базовое приложение, а затем собрал mongodb по кусочкам и выразил части со всего Интернета.
Я получаю эту ошибку в консоли своего браузера, когда пытаюсь удалить профиль клиента -
ОШИБКА Тип: Ошибка: невозможно прочитать свойство _id для undefined в ClientProfileComp.webpackJsonp ... / .. / .. / .. / .. / src / app / components / clientProfile.component.ts.ClientProfileComp.delete (clientProfile.component .ts: 53) ... (и т. д.).
Я подтвердил через почтальона, что моя экспресс-маршрутизация работает должным образом. Я могу получать / создавать клиентов в /api/clients
, а также получать, помещать и удалять из /api/clients/:_id
(где _id - автоматически сгенерированный идентификатор для каждой записи).
Я считаю, что проблема в одном из моих файлов компонентов, поскольку ошибка возникает только тогда, когда я пытаюсь удалить или просмотреть конкретную информацию о клиенте, что полностью вызывает другой тип ошибки (CastError). Проблема, вероятно, началась, когда я попытался удалить все упоминания clientProfile: ClientProfile[];
(или Hero в случае учебника), поскольку я больше не импортирую детали из client.ts
(hero.ts), поскольку вместо этого я использую схему мангуста, и я это делаю не верю, что мне следует импортировать эту схему в свой интерфейс angular.
вот раздел удаления clientProfile.service.ts:
delete(_id: number): Promise<void> {
const url = `${this.clientProfilesUrl}/${_id}`;
return this.http.delete(url, {headers: this.headers}).toPromise()
.then(() => null).catch(this.handleError);
}
и вот clientProfile.component.ts по запросу (наиболее вероятный источник моей проблемы в том, что я заменил все экземпляры clientProfile: ClientProfile;
на clientProfile: any;
, не зная, что я делал), обратите внимание на закомментированный оператор импорта.
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
//import { ClientProfile } from '../old/clientProfile';
import { ClientProfileService } from '../services/clientProfile.service';
@Component({
selector: 'app-clientprofile',
templateUrl: '../views/clientProfile.component.html',
styleUrls: [ '../styles/clientprofile.component.css' ]
})
export class ClientProfileComp implements OnInit {
selectedClientProfile: any;
clientProfiles: any = [];
clientProfile: any;
constructor(
private clientProfileService: ClientProfileService,
private router: Router
) { }
gotoDetail(): void {
this.router.navigate(['/detail', this.selectedClientProfile._id]);
}
getClientProfiles(): void {
this.clientProfileService.getClientProfiles().then(clientProfiles => {
this.clientProfiles = clientProfiles;
});
}
ngOnInit(): void {
this.getClientProfiles();
}
onSelect(clientProfile: any): void {
this.selectedClientProfile = clientProfile;
}
add(name: string, address: string): void {
name = name.trim();
address = address.trim();
if (!name) { return; }
this.clientProfileService.create(name, address).then(clientProfile => {
this.clientProfiles.push(clientProfile);
this.selectedClientProfile = null;
this.getClientProfiles();
});
}
delete(clientProfile: any): void {
this.clientProfileService.delete(clientProfile._id).then(() => {
this.clientProfiles = this.clientProfiles.filter(h => h !==
clientProfile);
if (this.selectedClientProfile === clientProfile) { this.selectedClientProfile = null; }
});
}
}
Я размышлял над этим весь день и прочитал здесь много похожих постов, но большинство решений, похоже, не применимы к этому случаю. Если бы кто-нибудь мог указать мне правильное направление, я был бы очень благодарен. Если потребуется еще какой-либо код, чтобы объяснить, что я пытаюсь сделать, я с радостью отправлю его.
_id
в поле undefind, что означает в вашемclientProfile.component.ts
, когда вы делаетеclientProfile._id
в это времяclientProfile
undefined
- person ranakrunal9   schedule 12.09.2017clientProfile.component.ts
- person ranakrunal9   schedule 12.09.2017