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

#angular #angular2-routing

#angular #angular2-маршрутизация

Вопрос:

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

 {
        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

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

Спасибо.

Ответ №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)
  }
 

Спасибо.