Angular 2. 调用一个组件,获取参数只能执行一次

Angular 2. Calling a component and getting the parameter works one time only

我有这样定义的路线:

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

我正在尝试获取参数 Agreement,我使用以下代码就可以做到这一点:

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

我不知道我做错了什么,我会感谢你的帮助。

谢谢。

如果有人正在寻找此问题的解决方案,您可以直接在组件级别更改 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)
  }

谢谢。