我有一个组件,用于呈现从后端检索的数据。在渲染之前,需要根据参数过滤掉数据。 URL的最后一段是过滤器值,如何将其传递给组件?
答案 0 :(得分:3)
首先,如果您向我们提供代码示例将更容易。
现在,在你的app.routes.ts中你应该有这样的东西:
{
path: 'detail/:id',
component: HeroDetailComponent
}
现在你可以在这种情况下导航到细节/ 11。
在详细信息组件中,您需要导入它:
import { ActivatedRoute } from '@angular/router';
并将其作为private添加到构造函数中:
private route: ActivatedRoute
然后你可以得到这样的id param:
this.route.params.subscribe(params => {
let id = +params['id'];
this.heroService.getHero(id)
.then(hero => this.hero = hero);
});
在这种情况下,英雄ID是一个数字。路由参数始终是字符串。所以我们使用JavaScript(+)运算符将route参数值转换为数字。 记住这一点。
如上所述here,如果你实现ngOnInit(订阅params observable)和ngOnDestroy(破坏sub)
会更好答案 1 :(得分:0)
您可以在组件的构造函数中使用route params
https://angular.io/guide/router
https://angular.io/api/router/Params
constructor(routeParams: RouteParams) {
this.filter = routeParams.get('custom_filter');
}