【发布时间】:2019-07-30 11:13:38
【问题描述】:
我正在开发一个 Angular 7 应用程序,它允许管理实体,例如汽车和学生。
应用程序组件可以用以下树来描述:
- 汽车
- 汽车/CreateCar(对话框)
- 学生
- 学生/创建学生(对话框)
在 CreateCar 对话框中创建汽车时,用户应该能够使用 CreateStudent 对话框创建并指定新学生作为汽车的所有者。
同样,在 CreateStudent 对话框中创建 Student 时,用户应该能够使用 CreateCar 对话框创建新车并将其分配为 Student 的属性.
编译时,Angular 显示:“检测到循环依赖中的警告”,我知道这应该发生。
我已尝试搜索模式来解决此问题,例如共享服务,但似乎没有人工作。
编辑:
两个对话框的构造函数的相关部分:
constructor(
private readonly matDialog: MatDialog
) {
}
在 CreateStudent 对话框中,打开 CreateCar 对话框的方法:
createCar(): void {
this.matDialog
.open(CreateCarDialogComponent)
.afterClosed().subscribe((car: Car) => {
// Do something with car
});
}
在 CreateCar 对话框中,打开 CreateStudent 对话框的方法:
createStudent(): void {
this.matDialog
.open(CreateStudentDialogComponent)
.afterClosed().subscribe((student: Student) => {
// Do something with student
});
}
对解决这个问题有什么建议吗?
谢谢
编辑 2:
在这里演示 https://stackblitz.com/edit/angular-bbfs8k
(Stackblitz 似乎没有显示编译警告)
【问题讨论】:
-
Cars和Students是独立的模块吗? -
你在使用桶文件吗?还有更多的错误信息吗?
-
展示如何打开对话框很重要。我需要知道你是否在使用组件工厂,因为它告诉我如何解决这个问题。
-
@PankajPrakash 没有。它们在同一个模块中
-
@JoeyGough 没有。不再有这些警告。
标签: angular dialog circular-dependency