Стек Angular 4 MEAN: как получить значение в зависимости от другого {{value}}

1

Я новичок в угловых 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
          );
        }
  • 0
    Не ясно, можете ли вы прислать мне, какой ответ вы получаете и что вы хотите напечатать?
Теги:
angular

1 ответ

1
Лучший ответ

Я не уверен, что понял твою проблему, скажи мне, что я ошибаюсь. Вы хотите отображать контактные данные, но для поля 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
        );
      } 

Это позволит убедиться, что все данные загружены с самого начала.

Я надеюсь, что это помогает. Скажите мне, если я ошибаюсь или вы ищете какое-то другое решение.

  • 0
    Спасибо за ваш ответ. Я попробовал ваш код и получил: ERROR in .../client/app/contact/contact.component.ts (51,39): Cannot find name 'getClient'.
  • 0
    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()); }
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню