如何将参数传递给Angular2组件

时间:2016-02-24 21:34:39

标签: angular

我有一个组件,用于呈现从后端检索的数据。在渲染之前,需要根据参数过滤掉数据。 URL的最后一段是过滤器值,如何将其传递给组件?

2 个答案:

答案 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');
}