Здесь находится плункер: http://embed.plnkr.co/B8feYX7e6oxvI2u4zmYW/Угловой 2 новый (RC1) маршрутизатор. Маршрутизатор второго уровня работает только один раз
Нажмите «Ребенок 1» - работает. Теперь нажмите «Child 2» - не работает. Нажмите «HOME». Нажмите «Child 2» - работает. Теперь нажмите «Ребенок 1» - не работает.
В основном, переход от корня приложения к вложенному разъему маршрутизатора работает только один раз в жизни приложения или пока вы не вернетесь сначала к корню.
Вот некоторые из кода (смотрите на plunker для полной версии):
app.component
@Component({
selector: 'my-app',
directives: [ROUTER_DIRECTIVES],
template: `
<div>
<a [routerLink]="['/']">HOME</a>
<a [routerLink]="['/child', 1]">Child 1</a>
<a [routerLink]="['/child', 2]">Child 2</a>
</div>
<div>
<router-outlet></router-outlet>
</div>
`
})
@Routes([
{ path: 'child/:id', component: ChildContainerComponent }
])
export class AppComponent { }
ребенка container.component
@Component({
directives: [ROUTER_DIRECTIVES],
template: `
<div>
<h3>Child outer container</h3>
<router-outlet></router-outlet>
</div>
`
})
@Routes([
{ path: '/', component: ChildComponent }
])
export class ChildContainerComponent{
}
child.component
@Component({
template: `
<div>
Child: Id={{_id}}
</div>
`
})
export class ChildComponent implements OnInit {
private _id: number;
private get routeSegment(): RouteSegment { // must be better way to get value
return this._router.routeTree._root.children[0].value;
}
constructor(private _router: Router) {
}
ngOnInit() {
this._id = +this.routeSegment.getParam('id');
}
}
Это, кажется, работает, но почему в моем случае это тоже работает, но только один раз? – rook
Я думаю, что это работает только в том случае, если вы находитесь на пути к вашему приложению, и это связано с тем, как маршрутизатор RC1 строит маршруты постепенно, когда вы заходите глубоко в свои ссылки. –
Найден даже сокращенный вариант получения пар на GitHub: конструктор (частный _router: маршрутизатор, частная _segment: RouteSegment) {} ngOnInit() { this._id = + this._segment.getParam ('ID'); } – rook