我对角和RxJS都很陌生。我正在尝试创建一个角度组件,它允许不同的对象共享一个树结构的数据集。
这是我的场景,以一种想象和简化的方式-一个角度组件,将整个公司的结构张贴到服务器。这个结构是多个"StuffDto“对象的组合,它们相互引用作为它们的管理器。所有员工共享同一公司的部门结构图。
多层次结构图如下:
- Advertisement Dept
- Planner Team
- Designer Team
- QA Dept
- Inspector Team
- Assurance Team
这是我的StaffDto类,它将在提交后直接发布到服务器。
export class StaffDto {
id: string;
name: string;
assignedDept?: string;
managerId?: string;
}这是我的Stuff对象,它将在我的角度应用程序周围传递。
export class Stuff {
data: StuffDto;
_manager: Stuff;
get manager(): Stuff {
return this._manager;
}
set manager(manager: Stuff) {
this._manager = manager;
this.data.managerId = manager.data.id;
}
}这将在一些简单的场景中工作,但并不是所有的场景。
如果我创造了彼得和汤姆,那就让彼得做汤姆的经理。下面是两个StuffDto对象的样子。
{ id: abc01,
name: 'Peter',
assignedDept: 'Marketing Dept',
managerId: null }
{ id: abc02,
name: 'Tom',
assignedDept: 'Sales Dept',
managerId: 'abc01' }如果我把彼得的id从"abc01“改为"abc01a",我也会期望汤姆的ManagerId也会被修改。另外,如果我把彼得的assignedDept表格“市场部”改为“研发部”,因为在彼得的部门下面没有“销售部”来分配汤姆,汤姆的assignedDept应该被清除为空。
我不太确定这是否可以通过订阅RxJS来完成。我试着让_manager成为一个Subject,然后订阅它。但是,只有在分配了新的管理器时才会调用该函数,而不是在经理的属性更改时调用该函数。
我想知道是否有办法做到这一点,而不改变太多的代码。由于StuffDto将被传递给服务器,所以我无法更改它。
发布于 2018-08-16 08:22:50
https://stackoverflow.com/questions/51871190
复制相似问题