Estou com dúvidas quanto ao uso do subject em uma aplicação pessoal. Tentei usar ele e até funciona em partes. Mas, quando faz o next em app.component ele simplesmente ignora o resultado. E pega o valor que passei no startwith;
código do subject
@Injectable({
providedIn: 'root'
})
export class HeaderNavbarService {
displayNavSubject: Subject<boolean> = new Subject<boolean>();
getDisplay() {
return this.displayNavSubject.asObservable().pipe(startWith(false));
}
disableMenu(display: boolean) {
console.log(display);
this.displayNavSubject.next(display);
}
}
código no componente
@Component({
selector: 'app-header-navbar',
templateUrl: './header-navbar.component.html',
styleUrls: ['./header-navbar.component.css']
})
export class HeaderNavbarComponent implements OnInit {
disableMenu$: Observable<boolean>;
constructor(private headerNavService: HeaderNavbarService) { }
ngOnInit() {
this.headerNavService.getDisplay().subscribe(resultado => console.log(resultado));
this.disableMenu$ = this.headerNavService.getDisplay();
}
}
Código Header HTML
<app-header-login-nf [isDisableMenu]="disableMenu$ | async"></app-header-login-nf>
<p>{{disableMenu$ | async}}</p>
Código no app component
import {Component, OnInit} from '@angular/core';
import {HeaderNavbarService} from './components/header-navbar/header-navbar.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
constructor(private headerNavService: HeaderNavbarService) {
}
ngOnInit(): void {
this.headerNavService.disableMenu(true);
}
}
App HTML
<app-header-navbar></app-header-navbar>
no console quando chamo o disableMenu no onInit do appComponent ele fica true; Mas quando faz o |async no headerComponent ele está falso no console.