currentNode$ = new Subject<NavigationNode>();
constructor(private router: Router) {
router.events.subscribe((event) => {
if (event instanceof NavigationEnd) {
this.setCurrentNode(event.urlAfterRedirects);
}
});
}
private setCurrentNode(route: string): void {
const currentNode = ....
this.currentNode$.next(currentNode);
}
public getCurrentNodeObservable(): Observable<NavigationNode> {
return this.currentNode$.asObservable();
}
В нем я по текущему роуту определяю объект для навигационного меню - какой путь сейчас выбран.
Далее, в родительской компоненте я присасываюсь к этому объекту:
selectedNode$: Observable<NavigationNode> = this.navService.getCurrentNodeObservable();
И уже этот обсёрвабл кидаю в дочернюю компоненту в html
<app-nav-menu [selectedNode]="(selectedNode$ | async)"></app-nav-menu>
И вроде бы все работает хорошо. Но, при обновлении страницы - сервис определяет текущее положение, толкает его в обсервабл - но родительская компонента не получает этого первого значения. Получает уже только если дальше по приложению пойти гулять.
Прикидываю, что где-то что-то не успевает инициализироваться - но где и что не понимаю.
Может кто помочь?
привет, Если с ходу. Частая ошибка это то, что забывают подписываться на Observable. Ты подписываешься?
скорее всего проблема что вы используете простой сабжект
Обсуждают сегодня