#angular #routes
#angular #маршруты
Вопрос:
У меня есть компонент, который использует маршрутизатор для перехода к другому компоненту с логической переменной, подобной этой
isFirstPage: boolean;
this.router.navigate(['/consume/course/' this.id, {state: { isFirst: isFirstPage }} ], { replaceUrl: true });
в другом компоненте я пытаюсь получить эту переменную от маршрутизатора следующим образом
const isFirst = this.router.getCurrentNavigation().extras.state.isFirst;
но я получаю эту ошибку:
Не удается прочитать свойство ‘extras’, равное null
Почему у меня есть null для текущей навигации?
Я также пробовал https://netbasal.com/set-state-object-when-navigating-in-angular-7-2-b87c5b977bb
this.activatedRoute.paramMap
.pipe(map(() => window.history.state))
.subscribe(res => {
console.log(res);
});
и
this.router.events.pipe(
filter(e => e instanceof NavigationStart),
map(() => this.router.getCurrentNavigation().extras.state)
).subscribe(res => {
console.log(res);
});
и я все еще получаю undefined
Комментарии:
1. 👍 у вас просто небольшая проблема с методом навигации, проверьте мой ответ, как вы можете ее решить
Ответ №1:
навигация принимает только два параметра и является основой интерфейса NavigationExtras, и вы передаете массив sate to commands, поэтому он не определен
this.router.navigate(['/consume/course/' this.id], {
state: { isFirst: isFirstPage },
replaceUrl: true
});
проверьте эту демонстрацию 🚀🚀