Проблема:
Скажем, ваш сервис
ShareContent {
items: any[];
}
И ваш component1 и component2 ССЫЛКА на этот ShareContent.items.
Я полагаю, ваши предметы - это Массив.
Массив в JavaScript использует ссылку.
Поэтому, когда вы редактируете элементы в component1, компонент2 также будет затронут
, потому что они содержат одну и ту же ссылку.
Решите:
Сделайте так, чтобы только component2 содержал ту же ссылку со службой.
Элементы в component1 сначала будут содержать разные ссылки, но те же данные.
Чтобы решить эту проблему, вы должны
Первый в вашем компоненте1
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);
}
}