Я новичок в угловых 4 и не знаю, как получить мое решение. Я получаю данные от mongodb, и все работает отлично.
В поле contact.company находится _id от компании. Название компании сохраняется в company.name.
Вместо {{contact.company}} (где хранится идентификатор) должно быть имя client.name (которое является именем компании), чтобы показать настоящее имя, а не идентификатор. Как мне это получить?
Я думаю, мне нужно автоматически вызвать метод, который получает значения из базы данных?
Полный код находится здесь https://github.com/hevilp/angular/blob/master/client/app/contact/contact.component.html
полный код здесь: https://github.com/hevilp/angular
<tr *ngFor="let contact of contacts">
<td>{{contact.anrede}}</td>
<td>{{contact.titel}}</td>
<td>{{contact.vorname}}</td>
<td>{{contact.nachname}}</td>
<td>{{contact.company}}</td>
<td>
и contact.component.ts (код не работает...)
getClient() {
this.clientService.getClient().subscribe(
data => this.client = data,
error => console.log(error),
() => this.isLoading = false
);
}
Я не уверен, что понял твою проблему, скажи мне, что я ошибаюсь. Вы хотите отображать контактные данные, но для поля contact.company вы хотите отобразить реальное имя, полученное из базы данных, в функции id: contact.company, используя funtion: getClient (контакт)?
Если да, то почему вы ждете, пока не увидите данные, чтобы получить настоящее имя компании? Почему бы вам не разобрать ваш массив контактов и не добавить поле: contact_name с самого начала, я имею в виду в ngOnInit?
Если это так, вы должны добавить этот вызов в getContacts()
getContacts() {
this.contactService.getContacts().subscribe(
data => {
for (let contact of data) {
contact.contact_name = this.getClient(contact);
}
this.contacts = data
},
error => console.log(error),
() => this.isLoading = false
);
}
Это позволит убедиться, что все данные загружены с самого начала.
Я надеюсь, что это помогает. Скажите мне, если я ошибаюсь или вы ищете какое-то другое решение.
ERROR in .../client/app/contact/contact.component.ts (51,39): Cannot find name 'getClient'.
It is working now with = getClient(.this.contact)
но мой код в getClient неверен. getClient(client) { this.clientService.getClient(this.client).subscribe( data => this.client = data, error => console.log(error), () => this.isLoading = false ); }
и getClient(client): Observable<any> { return this.http.get(
/api/client/$ndomclient._id} ).map(res => res.json()); }