routing – Angular 2错误:无法解析’RouteParams’的所有参数

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

Cannot resolve all parameters for ‘RouteParams'(?). Make sure that all
the parameters are decorated with Inject or have valid type
annotations and that ‘RouteParams’ is decorated with Injectable.
angular2-polyfills.js:332 Error: Cannot read property ‘getoptional’ of
undefined…….

看看这个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,RouteParams]);

RouteParams由路由器提供.如果你自己提供它注入失败.

有关示例,请参见https://angular.io/api/router/Params. RouteParams只能注入路由器添加的组件.

Plunker example

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...