Доступ к свойствам объекта внутри другого класса объекта - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть 2 класса объектов в моем приложении angular7, которые заполнены данными - сотрудник и компания (данные получены через веб-API из базы данных).У сотрудника есть поля - emp_id, имя, фамилия и объект компании.Компания имеет - c_id, company_name, телефон.Я могу отобразить данные сотрудника - emp_id, имя и фамилию в таблице, используя «emp_id», «имя» и «фамилия», но при попытке отобразить компанию сотрудника отображается результат «[объект объекта]», но я хочу отобразитьимя_компании.

Если данные из веб-интерфейса просматриваются из программы подобно почтальону, объект компании правильно отображается внутри объекта сотрудника.

Я пытался использовать эти комбинации для доступа к названию компании - "компания.company_name "," company {company_name} "," company (company_name) ", но ничего из этого не работает.

Вот мои уроки в угловых

export interface employee
{
emp_id: number;
name: string;
surname: string;
company: Company;
}
export interface company
{
c_id: number;
company_name: string;
phone: string;
}

Объекты заполненыиспользуя http.get, и сохраняется в массивах

  public apartments:any [];
  public houses:any [];

  getEmployees(): Observable<Employee[]>
{
  return this.http.get<Employee[]>('http://localhost:60962/api/employees');
}
 getCompanies(): Observable<Company[]>
{
  return this.http.get<Company[]>('http://localhost:60962/api/companies');
}

Подписан на init

    ngOnInit()
    {
     this.getEmployees()
         .subscribe(data => this.apartments = data);

     this.getCompanies()
         .subscribe(data => this.houses = data);
    }

1 Ответ

2 голосов
/ 04 апреля 2019

Во-первых, интерфейсы должны начинаться с заглавной буквы:

export interface Employee {
  emp_id: number;
  name: string;
  surname: string;
  company: Company;
}

export interface Company {
  c_id: number;
  company_name: string;
  phone: string;
}

Затем просто объявите объект следующим образом:

public test: Employee = {
    emp_id: 0,
    name: "test",
    surname: "test2",
    company: {
      c_id: 12,
      company_name: "cmp name",
      phone: "+665589898"
    }
  }

в своем html, который вы можете просто сделать:

{{test.name}}
{{test.company.phone}}

В вашем коде ваша interface компания начинается с низкого значения «c», а вы объявили в объекте «C»

Рабочий пример: https://stackblitz.com/edit/angular-joap5a?file=src%2Fapp%2Fapp.component.html

...