【发布时间】:2016-09-21 01:48:07
【问题描述】:
使用 Angular 2 rc.1 和 TypeScript。当组件加载到子路由中时,我在将路由参数传递给我的组件时遇到了很多麻烦。我使用@angular/router-deprecated 包。
在我的根组件中,我这样配置路由:
@RouteConfig([
{path:'/top', name:'Top', component: EndPointComponent},
{path:'/sub/...', name:'Sub', component: MiddleManComponent}
])
这是我尝试读取参数的端点组件
import {Component} from '@angular/core';
import {RouteParams} from '@angular/router-deprecated';
@Component({
template: 'Route Params: {{routeParams.params | json}}'
})
export class EndPointComponent{
constructor(private routeParams:RouteParams){}
}
这是 中间人组件,其中包含到 EndPointComponent 的子路由
import {Component} from '@angular/core';
import {RouteConfig, ROUTER_DIRECTIVES} from '@angular/router-deprecated';
import {EndPointComponent} from "./endpoint.component";
@Component({
directives: [ROUTER_DIRECTIVES]
template: `<router-outlet></router-outlet>`
})
@RouteConfig([
{path: '/end', name: 'End', component: EndPointComponent, useAsDefault: true}
])
export class MiddleManComponent {}
从顶级路由加载组件时,可以从EndPointComponent的routeParams对象成功读取参数(例如:根组件中名为'Top'的路由)。但是,当我通过MiddleManComponent 导航到EndPointComponent 时,参数始终为空(例如:通过根组件中名为“Sub”的路由)。
子路由器在解析路由之前是否会从父路由器中清除参数?这没有多大意义,所以我打赌我错过了一些东西。我的问题很简单:如何将路由参数传递给子路由?
PS:我尝试为demo this setup 构建一个 plunker,但当我无法弄清楚为什么应用程序无法加载时我放弃了。
【问题讨论】:
标签: typescript routing angular