Я использую Angular 7 и пытаюсь получить данные из моих маршрутов.
Мои ленивые загруженные маршруты настроены так:
{
data: { menuItems: DASHBOARD_MENU_ITEMS },
path: 'dashboard',
loadChildren: './modules/dashboard/dashboard.module#DashboardModule',
},
{
data: { menuItems: ADMIN_MENU_ITEMS },
path: 'admin',
loadChildren: './modules/admin/admin.module#AdminModule'
}
И у меня есть наблюдаемое, чтобы получить эти данные примерно так:
menuItems$: Observable<any[]>;
В одном измои компоненты, у меня есть следующее:
this.menuItems$ = this.route.firstChild.firstChild.data;
this.menuItems$ = this.router.events.pipe(
// startWith(this.route.firstChild.firstChild.data),
filter(e => e instanceof RoutesRecognized),
map((event: RoutesRecognized) => {
console.log(event.state.root.firstChild.firstChild.firstChild.data)
return event.state.root.firstChild.firstChild.firstChild.data as NbMenuItem[];
}));
Но это не работает для меня, так как я считаю, что переназначаю свою наблюдаемую переменную menuItems$
.
Мне нужно сделать этотак как мне нужно получить данные, как при первом попадании на маршрут (который не вызывает событие с this.router.events
), так и каждый раз, когда пользователь перемещается.
Если я использую нотацию .subscribe()
, то она работает нормально, но я не хочу этого делать.Что я тут не так делаю?