Лучший способ разрешить маршрут Angular внутри одного компонента - PullRequest
0 голосов
/ 14 марта 2020

По сути, я намереваюсь вызвать функцию в том же компоненте Angular (v 9.1) с параметром route для маршрутов типа host/:route.

У меня есть следующий маршрут в app-routing.module.ts:

const routes: Routes = [
  { path: ':route', component: AppComponent }
];

также перезагрузка поведение для навигации по тому же URL:

@NgModule({
  imports: [RouterModule.forRoot(routes,
    {
      onSameUrlNavigation: 'reload'
    })],
  exports: [RouterModule]
})

и вот как я подписываюсь на события маршрутизации в ngOnInit:

    this.router.events.subscribe((event: Event) => {
      if (event instanceof NavigationEnd) {
        let route = this.route;
        while (route.firstChild) {
          route = route.firstChild;
        }
        if (!this.routeMappginInitialized) {
          route.params.subscribe(param => {
            if (param.route !== undefined) {
              this.mapRouteToNavigation(param.route);
            }
          });
          this.routeMappginInitialized = true;
        }
      }
    });

На самом деле это работает, но мне интересно, является ли это лучшим решением, хотя большинство веб-фреймворков, с которыми я работал, облегчали доступ к / отображали параметры маршрута.

Я также пытался:

this.route.snapshot.paramMap.get('route');

, но всегда возвращает undefined .

1 Ответ

0 голосов
/ 14 марта 2020

AppComponent - это загруженный компонент, поэтому вы не должны пытаться загрузить его с маршрутом. Исправьте эту проблему проектирования, и она должна работать, в вашем коде нет ничего неправильного.

...