如何在Angular 2 RC4中获取查询参数

时间:2016-08-10 08:08:49

标签: angular typescript

如何在Angular 2 RC4中获取查询参数?我尝试了文档,但没有任何意义。

e.g。

http://localhost:3000/models/initials/mid_c1e1c31e6eff42f1982af4124a823b36?test=4

ngOnInit中如何获取参数test的值?

private sub: Subscription;
ngOnInit() {

    this.sub = this.route.params.subscribe(params => {

        console.log(params);
        let id = params['test']; 
        console.log(id);

     });

}

这是我导航到我想要获取查询参数的路线:

   this._router.navigate(['models/initials/'+model_id+'?test=4']);

5 个答案:

答案 0 :(得分:5)

OP询问了查询参数,正确的方法是使用该路径下的queryParams对象。

ngOnInit() {
  this.sub = this.route.queryParams.subscribe(params => {
    console.log(params);
    let id = params['test']; 
    console.log(id);
 })
}

这与另一个回答引用的params对象不同。

我还建议使用NavigationExtras对象正确地添加到查询字符串中:https://angular.io/docs/ts/latest/guide/router.html向下在"查询参数和片段"部分。

答案 1 :(得分:3)

 constructor(private route:ActivatedRoute) {}

 ngOnInit() {
        this.route.params.map(params => params['test'])
            .subscribe(id => { /* do what you want with the id */ });

答案 2 :(得分:0)

您必须使用ActivatedRoute:

private sub: Subscription;


constructor(private router: Router, private activatedRoute: ActivatedRoute){}

ngOnInit() {
    this.sub = this.activatedRoute.params.subscribe(
      (param: any) => this.test = param['test']
  )
}

答案 3 :(得分:-1)

您是否尝试过RouteSegment

 routerOnActivate(curr: RouteSegment) {
    this.userName = curr.getParam('userName');
    this.projId = curr.getParam('projId');
  }

答案 4 :(得分:-1)

可以这种方式使用Javascript:

(new URL(location)).searchParams.get("parameter_name")