#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)
}
Спасибо.