首页 > 解决方案 > 访问其他对象类中对象的属性

问题描述

我的 angular7 应用程序中有 2 个对象类,其中填充了数据 - 员工和公司(数据通过 Web api 从数据库接收)。员工有字段 - emp_id、姓名、姓氏和公司对象。公司有 - c_id、company_name、电话。我可以使用“emp_id”、“name”和“surname”在表中显示员工-emp_id、姓名和姓氏数据,但是当尝试显示员工公司时,显示的结果是“[object Object]”,但我想显示公司名称。

如果通过 postman 等程序查看来自 web api 的数据,则公司对象会正确显示在员工对象中。

我曾尝试使用这些组合来访问公司名称 - “company.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');
}

在初始化时订阅

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

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

标签: .netangulartypescriptapiweb

解决方案


首先,接口应该以大写字母开头:

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


推荐阅读