Angular - как программно обновить параметр URL - PullRequest
0 голосов
/ 29 марта 2020

Предположим, у меня есть компонент, который отображает список актеров для mov ie. После того, как актер выбран, некоторые сведения об этом конкретном актере будут отображаться в том же компоненте.

Моя цель - включить в URL идентификаторы mov ie и id актера. Кроме того, когда выбран новый актер, идентификатор субъекта из URL-адреса должен соответственно измениться.

URL-адрес должен иметь следующую форму: / movies / movieId / актеры / actorId

Итак, у меня есть один компонент, который должен сделать следующее:

  1. получить mov ie id
  2. для этого mov ie id, получить список актеров
  3. если идентификатор актера не был предоставлен, выберите первого актера и измените URL соответствующим образом
  4. если был предоставлен идентификатор актера, выберите этого актера и не изменяйте URL
  5. изменить actorId из URL всякий раз, когда пользователь выбирает актера из списка

Я не совсем уверен, что является лучшим решением для обновления параметра URL. На данный момент я использую следующее решение:

конфигурация маршрутизации:

path: ':movieIdId',
      component: MoviesComponent,
      children: [
        {
          path: 'actors',
          component: ActorsComponent
        },
        {
          path: 'actors/:actorId',
          component: ActorsComponent
        }
]

И для обновления URL я делаю следующее:

updateActorId(actorId: number) {
    this.router.navigate(['movies', this.movieId, 'actors', actorId]);
}

1 Ответ

1 голос
/ 29 марта 2020

Один из способов изменить URL-адрес без фактической навигации в другом месте (если это то, о чем вы спрашиваете) - это использовать Местоположение go

location.go('/movies/' + this.moveId + '/actors/' + actorId)

https://angular.io/api/common/Location#go

...