Все, что вам нужно, это сервис, в котором у вас есть переменная типа Subject
. С помощью этой переменной вы сможете в своем компоненте B ждать, пока компонент A что-то отправит.
service.ts
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
@Injectable()
export class SiblingServiceService {
showSibling = new Subject<boolean>();
constructor() { }
}
showSibling
is ваш Тема, где вы можете ждать данных в компоненте B
компонент A
import { theService } from 'path/to/service'
...
export class SiblingAComponent implements OnInit {
constructor(private service: theService) { }
ngOnInit() {
}
openPanel(){
this.service.showSibling.next(true);
}
}
компонент B
import { theService } from 'path/to/service'
...
export class SiblingBComponent implements OnInit {
active: boolean = false;
constructor(private service: theService) { }
ngOnInit() {
}
openPanel(){
this.service.showSibling.subscribe(res => {
this.active = res
});
}
}
Вот рабочий пример stackblitz