Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何订阅路由更改并获取参数?_Javascript_Angular - Fatal编程技术网

Javascript 如何订阅路由更改并获取参数?

Javascript 如何订阅路由更改并获取参数?,javascript,angular,Javascript,Angular,我在官方页面上尝试过这个示例,但它不起作用,其他页面上的其他示例也不起作用。路由器和路由导出都没有参数。如何订阅并获得参数更改? 我也不能使用RouteParams,我遇到了一个例外,没有提供程序。 谢谢大家! 在angular 2的当前版本中,我如何做到这一点 private sub: any; ngOnInit() { this.sub = this.route.params.subscribe(params => { let id = +par

我在官方页面上尝试过这个示例,但它不起作用,其他页面上的其他示例也不起作用。路由器和路由导出都没有参数。如何订阅并获得参数更改? 我也不能使用RouteParams,我遇到了一个例外,没有提供程序。 谢谢大家!

在angular 2的当前版本中,我如何做到这一点

private sub: any;

    ngOnInit() {
      this.sub = this.route.params.subscribe(params => {
         let id = +params['id']; // (+) converts string 'id' to a number
         this.service.getHero(id).then(hero => this.hero = hero);
       });
    }
我的代码:

@RouteConfig([
    { path: '/:appleId/:bananaId/fruits/...', name: 'Fruits', component: FruitsComponent }
])
如何在水果组件中获得appleId或bananaId更改?
this.route.params
不存在:(我应该用什么来代替?

试试下面的一个:

@RouteConfig([
    { 
        path: '/:id', name: 'Fruits', component: FruitsComponent 
    }
])
ngOnInit() {
    this.sub = this.route.snapshot.params['id'];
    if(this.sub == 'appleId/:bananaId/fruits'){
        // your code
    }
}

这是最适合从url获取参数的方法

import {ActivatedRoute} from '@angular/router';

constructor(private activatedRoute: ActivatedRoute) {}

this.activatedRoute.queryParams.subscribe(params => {
  let id = = params['id'];
});

这仅适用于路由包含参数的组件。例如,如果该参数适用于子路由,则仅适用于该子路由的组件,而不适用于
AppComponent
。另请参见添加路由以及包含问题代码的组件。因此,您使用的是不推荐使用的路由器吗gOnInit()代码与新路由器类似,但
@RouteConfig
是用于不推荐的beta路由器。这意味着您使用的是beta版本。是否有任何原因不更新到最新版本(RC.4)?新Angular2位于
@Angular2
下,而不是
Angular2