Ну, конечно, вы можете ... вроде.Закрытые переменные доступны только внутри их собственного класса, поэтому это должна быть публичная переменная.
Однако вы потеряете основное преимущество BehaviorSubject
.Если значение совместно используется несколькими компонентами, преимущество Subject
состоит в том, что эти подписчики будут обновляться асинхронно с этим значением, когда это значение установлено.В противном случае эти компоненты должны будут обнулять проверку этого значения, а не просто получать его реактивно.Эти компоненты также будут получать обновления этого значения реактивно, поэтому, если это значение обновляется вместо того, чтобы оставаться статическим, BehaviorSubject
становится гораздо более полезным.
Еще одно замечание: наличие значений как BehaviorSubjects
или дажеprivate BehaviorSubjects
для службы с asObservable
геттерами - это шаблон проектирования, обычно встречающийся в «магазинах», или сервисы с отслеживанием состояния, которые становятся популярными в библиотеках, таких как @ngrx/store.
Angular isочень реактивная программа, построенная на RxJS, но в конечном итоге использование Observable
s в вашем приложении все еще остается выбором дизайна.
Кроме того, при наличии общей переменной обычно лучше всегосделайте это значение неизменным извне службы - либо написав только получатель для этого значения, либо оставив его закрытым и сделав его доступным только через методы.