Приношу свои извинения, если это размещено где-нибудь в Stack Overflow, но я не нашел ответ, который бы мне подошел.
У меня есть BehaviorSubject, который отслеживает состояние как логическое значение. У меня также есть метод получения publi c, который является Observable, который возвращает BehaviorSubject. Я делаю это для того, чтобы не только подписаться на изменения в значении BehaviorSubject, но и получить текущее значение, если оно не изменилось. Хотя я могу получить правильное значение от подписки, я получаю объект, возвращаемый просто при вызове метода получения. Я хочу, чтобы он возвращал последнее значение.
Я пробовал использовать .getValue (), который, похоже, не работает, и я пробовал .value, который, похоже, работает, но выдает ошибку в IDE.
Я создал очень базовый c пример того, что я пытаюсь выполнить sh, и я поместил комментарии в файл my.service.ts, чтобы показать, что я м собираюсь. Пожалуйста, порекомендуйте. Спасибо!
РЕДАКТИРОВАТЬ: Я использовал то, что было в стеке блиц по умолчанию, и назначил геттер переменной name, чтобы увидеть это. Моя цель - получить значение, чтобы я мог что-то делать в зависимости от того, истинно это значение или нет. Я уверен, что мне не хватает чего-то очень простого.
EDIT: добавление кода в вопрос по запросу
EDIT: я также добавил .subscribe, чтобы показать это, хотя я понимаю, как Наблюдаемые работают, я также хочу проверить значение ВНЕШНЕГО изменения значения, используя тот же геттер, если это возможно.
MyService
import { Observable, BehaviorSubject } from "rxjs";
export class MyService {
constructor() {}
private _isBoolean = new BehaviorSubject<boolean>(false);
public get isBoolean(): Observable<boolean> {
//return this._isBoolean.value; // Returns boolean, but throws error "Type 'boolean' is not assignable to type 'Observable<boolean>'."
return this._isBoolean; // Returns object, but I want the value
}
}
AppComponent
import { Component } from '@angular/core';
import { MyService } from './my.service';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name;
constructor(private _myservice: MyService) {
this._myservice.isBoolean.subscribe(val => {
console.log("value from subscribe: " + val)
})
this.name = this._myservice.isBoolean;
if (this._myservice.isBoolean) {
console.log("true!");
} else if (!this._myservice.isBoolean) {
console.log("false!");
}
}
}
https://stackblitz.com/edit/angular-hhdgrc