我有这些路线
const routes: Routes = [
{ path: 'home', component: HomeComponent },
{
path: 'explore',
component: ExploreComponent,
children: [
{ path: '', component: ProductListComponent },
{ path: ':categorySlug', component: ProductListComponent }
]
}
];
这意味着用户可以转到
/explore
(无类别)要么
/explore/computers
(类别computers
)我希望能够从父级(
ExploreComponent
)订阅categorySlug
参数更改,并处理事件。我怎样才能做到这一点?编辑:
我尝试使用以下方式订阅:
this.activatedRoute.firstChild.params.subscribe(console.log);
它确实提供了我想要的东西,但是一旦我进入
/explore
(无类别),它就会死掉。它仅在使用/explore/:categorySlug
链接进行导航时有效。 最佳答案
您可以在组件中订阅params
并获取参数,例如像这样:
import { Router, ActivatedRoute } from '@angular/router';
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.params.subscribe(params => {
this.categorySlug= params['categorySlug '];
});
// do something with this.categorySlug
}
旁注:通常,您在Web应用程序中使用一种主要细节结构,因此第一个路径转到主要对象,第二个路径转到细节,每个路径都有不同的组件,但是如果您要使用两者的组件相同,或者没有这种主从关系,则应检查参数是否为null。