获取路由查询参数

新手上路,请多包涵

我正在尝试从 rc1 迁移到 rc4,但无法获取查询字符串参数。 ActivatedRoute 对象始终为空。

hero.component.ts

 import {Component, OnInit} from "@angular/core";
import {Control} from "@angular/common";
import {ROUTER_DIRECTIVES, ActivatedRoute} from '@angular/router';

@Component({
    template: '../partials/main.html',
    directives: [ROUTER_DIRECTIVES]
})

export class HeroComponent implements OnInit {

    constructor(private _activatedRoute: activatedRoute) {

    }

    ngOnInit() {
        this._activatedRoute.params.subscribe(params => {
            console.log(params);
        });
    }
}

main.ts

 import {bootstrap} from '@angular/platform-browser-dynamic';
import {HTTP_PROVIDERS, RequestOptions, Http} from '@angular/http';
import {AppRouterProviders} from './app.routes';

bootstrap(AppComponent, [
    AppRouterProviders,
    HTTP_PROVIDERS
]);

app.component.ts

 import {Component, OnInit} from '@angular/core';
import {HeroComponent} from './hero.component';
import {RouteConfig, Router, ROUTER_DIRECTIVES} from '@angular/router';

@Component({
    selector: 'my-app',
    templateUrl: '../partials/main.html',
    directives: [
        HeroComponent,
        ROUTER_DIRECTIVES
    ]
})

export class AppComponent {
}

部分/main.html

 <a class="nav-link" [routerLink]="['/']" [queryParams]="{st: 'new'}">New</a>

应用程序.routes.ts

 import {provideRouter, RouterConfig}  from '@angular/router';
import {HeroComponent} from './hero.component';
import {ErrorComponent} from './error.component';

const routes: RouterConfig = [
    {path:'', component: HeroComponent},
    {path:'**', component: ErrorComponent}
];

export const AppRouterProviders = [
    provideRouter(routes)
];

当我点击链接“新建”控制台打印出空对象

目的 {}

更新

笨蛋

原文由 izupet 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 665
2 个回答

更新(2.0.0 最终版)

somepath/:someparam/someotherpath )您可以使用 _router.queryParams.subscribe(...) 订阅它们:

 export class HeroComponent implements OnInit {
  constructor(private _activatedRoute: ActivatedRoute, private _router:Router) {
    _activatedRoute.queryParams.subscribe(
      params => console.log('queryParams', params['st']));

原来的

如果您想要 queryParams 而不是路由参数( somepath/:someparam/someotherpath ),您可以使用 _router.routerState.queryParams.subscribe(...) 订阅它们:

 export class HeroComponent implements OnInit {
  constructor(private _activatedRoute: ActivatedRoute, private _router:Router) {
    _router.routerState.queryParams.subscribe(
      params => console.log('queryParams', params['st']));

Plunker 示例

原文由 Günter Zöchbauer 发布,翻译遵循 CC BY-SA 3.0 许可协议

检查角度文档,它都在那里: https ://angular.io/docs/ts/latest/guide/router.html

 constructor(
  private route: ActivatedRoute,
  private router: Router,
  private service: HeroService) {}

    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);
       });

原文由 Avi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进