2

我正在尝试从 Angular2 组件中的 url 获取查询参数

版本:“angular2”:“npm:angular2@2.0.0-beta.12”,

我正在尝试在组件中提取 id 查询参数并显示它

这是请求。

本地主机:8080/index.html?id=1

引导.ts

import 'reflect-metadata';
import 'angular2/bundles/angular2-polyfills';
import { bootstrap } from 'angular2/platform/browser';
import { provide} from 'angular2/core';
import { AppComponent } from './app.component';
import {ROUTER_PROVIDERS, Location, LocationStrategy,     HashLocationStrategy} from "angular2/router";
import {HTTP_PROVIDERS} from "angular2/http";

bootstrap(AppComponent , [ROUTER_PROVIDERS, HTTP_PROVIDERS, provide(LocationStrategy, {useClass: HashLocationStrategy})]);

这是 app.component.ts

import { Component } from 'angular2/core';
 import {Router, Location, ROUTER_DIRECTIVES, ROUTER_PROVIDERS, RouteConfig, RouteParams} from 'angular2/router';

@Component({
    selector: 'my-app',
    template: '{{welcome}} {{queryParam}}',
    directives: [ROUTER_DIRECTIVES]
})
export class AppComponent {
    welcome: string = 'Query Param test!'
    queryParam : string;

    constructor(private _location: Location, private _routeParams:     RouteParams){
        console.log(_routeParams.get('id'));
        this.queryParam = _routeParams.get('id');
    }

}

我不断收到此错误:

错误信息

我从另一篇文章中得到了这个解决方案。不知道如何修复错误

一种

4

2 回答 2

0

RouteParams它在根组件中不可用。它仅适用于可路由组件。

查看RouterOutlet源代码,在其激活函数中,可以看到以下内容

var providers = Injector.resolve([
  provide(RouteData, {useValue: nextInstruction.routeData}),
  provide(RouteParams, {useValue: new RouteParams(nextInstruction.params)}),
  provide(routerMod.Router, {useValue: childRouter})
]);

基本上 RouteParams 是通过 RouterOutlet 注入到可路由组件中的,您无法在不可路由组件中访问它(抱歉重复我自己)。

于 2016-03-30T20:46:58.590 回答
0

您可以从 AppComponent 中的 _location.path() 获取查询参数。你必须自己解析它们。我正在寻找同样的东西,并没有找到更好的解决方案。

我希望其他人跟进此事。

于 2016-05-16T00:53:20.343 回答