Angular 2. Вызов компонента и получение параметра работает только один раз

У меня есть маршрут, определенный следующим образом:

{
        path: 'manageagreements', component: ManageagreementsComponent,
        children: [
          { path: 'editagreement/:agreement', component: EditagreementComponent },
        ]
      }

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

ngOnInit(): void {
    this.activatedRoute.params.subscribe(parameter => {
      this.agreement = parameter.agreement;
    })
    alert(this.agreement)
  }

В manageagreements.component у меня есть две кнопки для передачи параметров tos и pp.

Это отлично работает, когда я вызываю компонент из его родителя в первый раз следующим образом:

http://localhost:4200/platform/manageagreements/editagreement/tos

Но когда он уже отрендерен, и я вызываю его из родительского компонента с другим параметром, он просто не работает:

http://localhost:4200/platform/manageagreements/editagreement/pp

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

Спасибо.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
98
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если кто-то ищет решение этой проблемы, вы можете изменить routeReuseStrategy непосредственно на уровне компонента с помощью:

this.router.routeReuseStrategy.shouldReuseRoute = () => false;

Таким образом, код заканчивается так (для примера выше):

public agreement: string;
  constructor(
    private activatedRoute: ActivatedRoute,
    private router: Router,
  ) { 
    this.router.routeReuseStrategy.shouldReuseRoute = () => false;
    this.activatedRoute.params.subscribe((params: Params) => {
      this.agreement = params.agreement;
    });
    alert(this.agreement)
  }

Спасибо.

Другие вопросы по теме