typescript Angular 句柄循环类属性引用

7eumitmz  于 2023-04-22  发布在  TypeScript
关注(0)|答案(1)|浏览(88)

在Angular中,我正在努力设置模拟数据。我有以下2个类:

export class Company {

  public id: number;
  public name: string;
  public applications: Application[];

  constructor(id: number, name: string, applications: Application[]) {
    this.id = id;
    this.name = name;
    this.applications = applications;
  }
}

export class Application {

  public id: number;
  public name: string;
  public company: Company;

  constructor(id: number, name: string, company: Company) {
    this.id = id;
    this.name = name;
    this.company = company;
  }
}

我还创建了这些服务:

export class CompanyService {

  companies = [
    new Company(
      1,
      'Company 1',
      []
    ),
    new Company(
      2,
      'Company 2',
      [],
    ),
  ]

  constructor(private http: HttpClient) { }

  getAll(): Company[] {
    return this.companies;
  }

  findById(id: number): Company | undefined {
    return this.companies.find(company => company.id === id);
  }
}


export class ApplicationService {

  applications = [
    new Application(
      1,
      'Application 1',
      // COMPANY HERE SOMEHOW?
    ),
    new Application(
      2,
      'Application 2',
      // COMPANY HERE SOMEHOW?
    ),
  ]

  constructor(private http: HttpClient) { }

  getAll(): Application[] {
    return this.applications;
  }

  findById(id: number): Application | undefined {
    return this.applications.find(application => application.id === id);
  }
}

现在不知何故,当我创建这个mockdata时,我需要在application的构造函数中添加一个公司,但是当我在那里添加一个公司时,该对象也需要在构造函数中包含应用程序。这导致了一个鸡/蛋问题,我不确定我应该如何定义它。
我是Angular的新手,所以我不知道框架中是否有技巧可以使用,或者我应该使用类的id,但是使用id我仍然有同样的问题。有人能帮助我吗?

vc6uscn9

vc6uscn91#

也许可以这样想,一个公司并不需要有应用程序才能存在,但一个应用程序可能确实需要一个公司才能创建。
因此,首先创建公司,然后使用适当的公司创建应用程序,然后在创建应用程序时将应用程序添加到公司的应用程序列表中。
或者问,你需要公司有这样的应用程序列出?也许你可以只搜索所有的应用程序与你正在寻找的公司,而不是把他们链接到公司这样。
这更多的是关于数据建模,而不是Angular,并且通过以模拟的方式创建它,这与现实世界不同,在现实世界中,公司在应用程序可以制作之前总是存在的。
希望能帮上忙。
如何“修复”它?不要在服务中创建数据?单独创建它,也许在数据服务中,并从那里的服务中查询它,这更像是一个真实的情况。

相关问题