Мне нужно создать Observable, который испускает логическое значение и может быть изменен из функции.
Я старался
showModal$ = new Observable<boolean>();
Но это не работает.
Мне нужно showModal$ быть false по умолчанию. И измените его значение с помощью функции
change() {
this.showModal$ = !this.showModal$;
}
Я использую Angular2 и хочу подписаться на этот Observable из разных компонентов.
Как лучше всего это сделать?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используйте BehaviorSubject
showModal$ = new BehaviorSubject<boolean>(false);
change() {
this.showModal$.next(!this.showModal$.getValue());
}
Вот демонстрация JavaScript
const { BehaviorSubject, fromEvent } = rxjs;
const showModal$ = new BehaviorSubject(false);
function change() {
showModal$.next(!showModal$.getValue());
}
fromEvent(document.getElementById('change'), 'click').subscribe(_ => {
change();
});
showModal$.subscribe(showModal => {
console.info(`Modal is shown is ${showModal}`);
});<script src = "https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.4.0/rxjs.umd.min.js"></script>
<button id = "change">Change</button>