Вы можете использовать следующий шаблон, где у вас есть класс обслуживания: он содержит значение, которое вы хотите передать в качестве наблюдаемого, и метод, который позволяет обновлять наблюдаемое значение.
Дочерний объект вызывает communicateUpdate
метод для обновления значения.
Родитель (и любой другой заинтересованный компонент) подписывается на наблюдаемое.
Вот примерный пример.
import { Injectable } from "@angular/core";
import { Subject } from 'rxjs';
@Injectable()
export class MyDummyService {
constructor() {
}
private TheValueIWantMyParentToSee = new Subject<any>();
ObservableValue$ = this.TheValueIWantMyParentToSee.asObservable();
communicateUpdatedValue(newValue:any){
this.TheValueIWantMyParentToSee.next(newValue);
}
}
Дочерний компонент вызывает communicationUpdatedValue для публикации sh значения, все, что подписано, получит обновленное значение. если ничего не подписано, оно просто исчезает
export class TheParentWhoSubscribes{
childValue: any;
constructor(private myDummyService: MyDummyService ) {
myDummyService.ObservableValue$.subscribe(response => {
this.childValue= response
});
}
}
Здесь ваш родительский класс подписывается на наблюдаемое. всякий раз, когда значение обновляется дочерним компонентом, this.childValue
устанавливается на новое значение