передача данных с состоянием не определена

#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 
     });
  

проверьте эту демонстрацию 🚀🚀