У меня есть следующая структура компонентов:
Компонент A -> Компонент B -> Компонент C
В шаблоне Компонент C у меня есть кнопка, которая при нажатии вызывает функцию в «коде позади».
Я пытаюсь добиться того, чтобы каждый раз, когда эта функция вызывалась, я хочу, чтобы функция в Компоненте А. вызывалась.
Компонент А является родителем компонента C
Я мог бы передать EventEmitter вниз в Компонент B, а затем в Компонент C, но я не хочу этого делать.
Я пробовал следующее:
SharedService.ts
@Injectable()
export class SharedService{
private subject = new BehaviorSubject<any>(null);
constructor() {}
valueClicked() {
console.log('Value Clicked has been called');
this.subject.next({});
}
getValue(): Observable<any> {
return this.subject.asObservable();
}
}
Компонент C .ts Метод
public buttonClicked(): void {
this.sharedService.valueClicked();
}
ComponentA.ts ngOnInit
public ngOnInit(): void {
this.subscription = this.sharedService.getValue().subscribe(message => {
console.log('Function Called');
});
}
Я бы ожидал, что каждый раз, когда функция вызывается в Компоненте C, Компонент А будет регистрировать «Вызванная функция», но это не так.