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)
}
谢谢。
我有这样定义的路线:
{
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)
}
谢谢。