【问题标题】:How can I subscribe for a route change and get a parameter?如何订阅路由更改并获取参数?
【发布时间】:2016-07-19 15:26:43
【问题描述】:

我已经尝试过官方页面上的示例,但它既不起作用,其他页面上的其他示例也对我不起作用。路由器和路由出口都没有参数。如何订阅并获取参数更改? 我也不能使用 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 }
])

如何获取 FruitsComponent 中的 appleId 或bananaId 更改? this.route.params 不存在 :( 我应该改用什么?

【问题讨论】:

  • 这仅适用于路由包含参数的组件。例如,如果参数用于子路由,则这只适用于该子路由的组件,但不适用于AppComponent。另见stackoverflow.com/questions/38460470/…
  • 请添加路线以及包含您问题代码的组件。
  • 所以你使用的是路由器弃用? ngOnInit() 代码类似于新路由器,但 @RouteConfig 用于已弃用的 beta 路由器。
  • 这意味着您使用的是测试版。您没有更新到最新版本 (RC.4) 是否有任何原因?
  • 新的 Angular2 在@angular 下而不是angular2

标签: javascript angular


【解决方案1】:

这个最适合从url获取参数

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

constructor(private activatedRoute: ActivatedRoute) {}

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

【讨论】:

    【解决方案2】:

    试试下面的一个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      • 2018-07-27
      • 2017-06-20
      • 2018-04-28
      • 2018-07-07
      • 2019-05-05
      • 1970-01-01
      相关资源
      最近更新 更多