问题:
假设您的服务是
ShareContent {
items: any[];
}
并且您的组件 1 和组件 2 都引用了该 ShareContent.items。我猜你的项目是数组。javascript 中的数组正在使用引用。因此,当您编辑 component1 中的项目时,component2 也会受到影响,
因为它们具有相同的引用。
解决:仅让 component2 与服务保持相同的引用。component1 中的项目将首先保存不同的引用但相同的数据。要解决这个问题,您应该
首先在您的 component1
Component1 {
constructor(shareContent: ShareContent) {
//Here you should let your items in component1
//hold the different reference to items
//You could look up for spreading(...) operator
this.items = [...this.shareContent.getItems()];
}
addItem(item) {
this.shareContent.add(item);
}
}
其次你的组件2
Component2 {
constructor(shareContent: ShareContent) {
//Here you SHOULD let your items
//hold the same reference with the service
this.items = this.shareContent.getItems();
}
addItem(item) {
this.shareContent.add(item);
}
}
ShareContent {
items: any[];
addItem(item) {
this.items.push(item);
}
}