Я angular 9 observables не работает на других компонентах, кроме app.component.
Вот мой сервис:
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
@Injectable()
export class LoggedinService {
constructor() { }
private loggedinAnnouncedSource = new Subject<boolean>();
// Observable string streams
loggedinAnnounced$ = this.loggedinAnnouncedSource.asObservable();
// Service message commands
announceLoggedin(loggedin: boolean) {
this.loggedinAnnouncedSource.next(loggedin);
}
}
Здесь работает хит в app.component на init:
this.li_sub = this.loggedinService.loggedinAnnounced$.subscribe(
isLoggedIn => {
this.isLoggedIn = isLoggedIn;
console.log('app isLoggedIn:',this.isLoggedIn);
}); //end this.li_sub
Это срабатывает, и я получаю в консоли следующее:
app isLoggedIn: true
У меня есть другой компонент, который загружается в onInit, и он вообще не запускается:
this.li_sub = this.loggedinService.loggedinОбъявленный $ .subscribe (
isLoggedIn => {
console.log('dashboard isLoggedIn:',this.isLoggedIn);
this.isLoggedIn = isLoggedIn;
}); //end this.li_sub
В результате я не могу получить this.isLoggedIn
Почему это не будет работать? Нет ошибок вообще
ОБНОВЛЕНИЕ:
Я использовал приведенный ниже комментарий на основании комментария. Почему это сработало? Я иду из angular 7, где работает.
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { BehaviorSubject } from 'rxjs';
@Injectable()
export class LoggedinServiceBehavior {
constructor() { }
private loggedinAnnouncedSourceB = new BehaviorSubject<boolean>(null);
// Observable string streams
loggedinAnnouncedB$ = this.loggedinAnnouncedSourceB.asObservable();
// Service message commands
announceLoggedin(loggedin: boolean) {
this.loggedinAnnouncedSourceB.next(loggedin);
}
}