У меня есть массив в моей serviceA, и я добавляю данные в этот массив в componentA и удаляю данные из этого массива в componentB (это entryComponent). Я хотел всегда знать текущую длину массива от componentA. Я создал переменную и событие в serviceA, которое обновляет длину переменной после вызова addData (метод службы) из componentA, а также после удаления removeData (метод службы) из componentB. Однако когда я вызываю addData, я вижу, что мой componentA получает обновленную длину массива, но когда я вызываю removeData из componentB, componentA не получает обновленную длину массива. Может кто-нибудь помочь мне, что здесь не так.
Сервисный код:
@Injectable()
export class serviceA implements OnInit {
public totalCurrentLength = 0;
public dataArray = [];
dataArrayChanged: Subject<any> = new Subject<any>();
constructor(){
this.dataArrayChanged.subscribe((value) => {
this.totalCurrentLength = value;
})
}
addData(data){
this.dataArray.push(data);
this.dataArrayChanged.next(this.dataArray.length);
}
removeData(index){
this.dataArray.splice(index, 1);
this.dataArrayChanged.next(this.dataArray.length);
}
}
componentA:
export class componentA implements OnInit {
public currentArrayTotal = 0;
constructor(
serviceAObj:serviceA){}
this.addData(data){
this.serviceAObj.addData(data);
this.currentArrayTotal = this.serviceAObj.totalCurrentLength;
}
}
ComponentB:
export class componentB implements OnInit {
constructor(
serviceAObj:serviceA){}
this.removData(index){
this.serviceAObj.removeData(index);
}
}