我真的对Angular和RxJS都是陌生的。我正在尝试创建一个Angular组件,该组件允许不同的对象共享树状数据集。
这是我想像的和简化的情况-将整个公司结构发布到服务器的Angular组件。此结构是多个“ StuffDto”对象的组合,这些对象互相引用作为其管理器。而且所有人员共享相同的公司部门结构图。
多层结构图如下:
这是我的StaffDto
类,将在提交后直接发布到服务器上。
export class StaffDto {
id: string;
name: string;
assignedDept?: string;
managerId?: string;
}
这是我的Stuff
对象,它将在我的Angular应用程序中传递。
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;
}
}
这将在某些简单的场景中起作用,但并非全部。
如果我创建Peter和Tom,则将Peter设置为Tom的经理。这是2个StuffDto
对象的样子。
{ id: abc01,
name: 'Peter',
assignedDept: 'Marketing Dept',
managerId: null }
{ id: abc02,
name: 'Tom',
assignedDept: 'Sales Dept',
managerId: 'abc01' }
如果我将Peter的id
从“ abc01”更改为“ abc01a”,我希望汤姆的ManagerId
也将被更改。另外,如果我将Peter的assignedDept
表格的“营销部”更改为“ R&D部”,由于在Peter的部门下没有Tom的“销售部”,Tom的assignedDept
应该清除为空
我不太确定是否可以通过订阅RxJS来完成。我试图将_manager
设为Subject
,然后订阅它。但是,只有在分配了新的经理后,才会调用该函数,而不会更改经理的属性。
我想知道是否有一种方法可以在不更改太多代码的情况下进行操作。由于StuffDto
将被传递到服务器,因此我将无法更改它。
答案 0 :(得分:1)