Поправьте меня, если я ошибаюсь,
Ваша проблема: вам нужно текущее (или последнее) значение, которое имеет наблюдаемое, независимо от того, испустило ли кто-то значение прямо сейчас или нет.
Ответ: A Субъект или Наблюдаемый не имеет текущего значения.Когда значение излучается, оно передается подписчикам, и с ним делается наблюдаемое.Observable вступит в действие только тогда, когда в предметный поток будет отправлено другое значение.
Если вы хотите иметь текущее значение, используйте BehaviorSubject , который предназначен именно для той цели, которая вам нужна.сохраняет последнее переданное значение, независимо от того, когда оно было отправлено, и немедленно передает его новым подписчикам.
Примечание: у него также есть метод getValue () для получения текущего значения.
еще одна проблема, с которой вы столкнулись.
Проблема: ваш текущий код не работает.
Ответ: Позвольте мне привести пример того, как я работаю с Наблюдаемый -
Courses-action.service.ts
import { Injectable } from ‘@angular/core’;
import { Subject } from ‘rxjs’;
@Injectable()
Export class CoursesActionService {
Public selectedCourseIndexUpdated = new Subject<any>();
Public isCourseIndexUpdated$ = this.selectedCourseIndexUpdated.asObservable();
Public announceSelectedCourseIndex(response: any) {
this.selectedCourseIndexUpdated.next(response);
}
Какой-то случайный файл, который выдает значение подписчику -
this.coursesActionService.announceSelectedCourseIndex(453);
Какой-то случайный файл, который прослушивает выбрасываемое значение -
this.coursesActionService.isCourseIndexUpdated$.pipe(takeUntil(this.destroyed$))
.subscribe(res => console.log(‘i have the response’, res));