Service
BehaviorSubject létrehozása, amely egy figyelhető boolean értéket tárol.
private readonly _isLoginPageBs$ = new BehaviorSubject<boolean>(false);
Observable létrehozása, hogy a külső kód figyelhesse, de ne módosíthassa az állapotot.
public readonly isLoginPageObs$ = this._isLoginPageBs$.asObservable();
Getter metódust definiál, amely az _isLoginPageBs$ aktuális értékét (value) adja vissza szinkron módon.
public get isLoginPage(): boolean {
return this._isLoginPageBs$.value;
}
Setter metódust definiál, amely az _isLoginPageBs$ értékét frissíti a megadott isLoginPage értékre.
public set isLoginPage(isLoginPage: boolean) {
this._isLoginPageBs$.next(isLoginPage);
}
Parent component
private readonly _headerNavService = inject(HeaderNavService);
public isLoginPage: boolean;
public ngOnInit(): void {
this._initIsLoginPage();
}
private _initIsLoginPage(): void {
this._headerNavService.isLoginPageObs$.pipe(takeUntil(this._destroy$)).subscribe((isLoginPage: boolean) => {
this.isLoginPage = isLoginPage;
this._cdr.markForCheck();
console.log(isLoginPage);
});
}
Child component
private readonly _headerNavService = inject(HeaderNavService);
@Input() public isLoginPage: boolean;
public ngOnInit(): void {
this._setLoginPage();
}
private _setLoginPage(): void {
this._headerNavService.isLoginPage = true;
}