尝试使用 RouteParams 获取查询字符串参数,但我只是收到错误



看看这个 Plnkr 。如何在没有收到此警告的情况下使用 RouteParams?

重要的文件是:
boot.ts :

import {bootstrap} from 'angular2/platform/browser';
import {ROUTER_PROVIDERS, RouteParams} from 'angular2/router';
import {AppComponent} from './app/app.component';

bootstrap(AppComponent, [ROUTER_PROVIDERS, RouteParams]);

app.component.ts :
import {Component, OnInit} from 'angular2/core';
import {RouteParams} from "angular2/router";

@Component({
  selector: 'app',
  template: `
    <p *ngIf="guid">guid gived is: {{guid}}</p>
    <p *ngIf="!guid">No guid given in query-string in URL</p>
  `
})
export class AppComponent implements OnInit {
  guid:string;

  constructor(private _params: RouteParams) {} //

  ngOnInit() {
    this.guid = this._params.get('guid');
  }

}

更新:

我没有任何路由,我只有默认的根路由(如果在我没有其他路由的情况下可以将其称为路由......)。但正如Gianluca所建议,我添加了以下路由配置:
@RouteConfig([
  { path: '/:guid', name: 'Home', component: AppComponent, useAsDefault: true },
])

但我仍然遇到同样的错误(Plnkr 已更新)...

最佳答案

从中删除 RouteParams

bootstrap(AppComponent, [ROUTER_PROVIDERS, RouteParams]);
RouteParams 由路由器提供。如果您自己提供它,则注入(inject)它会失败。

有关示例,请参见 https://angular.io/api/router/ParamsRouteParams 只能注入(inject)到路由器添加的组件上。

Plunker example

10-07 14:56