Маршрутизация к одному и тому же компоненту с другой маршрутизацией не работает в Angular - PullRequest
0 голосов
/ 05 августа 2020

У меня есть проект angular, в котором у меня есть панель навигации для маршрутизации к различным компонентам. Два элемента навигации на панели навигации позволяют перейти к одному и тому же компоненту, но с разными параметрами. Когда я пытаюсь перейти к любой из этих двух навигаций с панели навигации, она работает нормально.

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

Моя функция ngOnit

ngOnInit(): void {
        this.configId = this.route.snapshot.paramMap.get('id')
        this.getConfigurations();
    }

Глядя на ответ на аналогичный вопрос Я изменил свой код на

    ngOnInit(): void {
        this.sub = this.route.params.subscribe(params => {
            this.configId = params['id']
        })
        this.getConfigurations();
    }

    ngOnDestroy(): void{
        this.sub.unsubscribe()
    }

Но все же вижу такое же поведение.

Редактировать

Конфигурация маршрута

{ path: 'admin/program/:id', component: ConfigurationView , canActivate: [AuthGuard], data: {
        breadcrumb: [
            {
              label: 'Admin',
              url: ''
            },
            {
                label: 'Program ',
                url: ''
            }
          ]
        }
    },

1 Ответ

1 голос
/ 06 августа 2020

ngOnInit вызывается только тогда, когда компонент вставлен в дерево DOM.

Когда вы переходите по тому же пути с другим идентификатором, Angular не повторно отображает компонент. ( поэтому ngOnInit не вызывается снова, и вы не можете получить id внутри ngOnInit)

Вместо этого вы должны наблюдать, как ваши параметры меняются, как и вы, но вам нужно переместить свой getConfiguration() внутрь обратный звонок по подписке.

this.sub = this.route.params.subscribe(params => {
  this.configId = params['id']
  this.getConfigurations();
})
...