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