В моем приложении angular2 у меня есть компонент оболочки с кучей дочерних компонентов, загружаемых через маршрутизацию.Трек Angular2 Текущий маршрут
import {Component} from 'angular2/core';
import {Router, Route, RouteConfig, Location, ROUTER_DIRECTIVES, OnActivate, ComponentInstruction} from 'angular2/router';
import {Home} from './components/home/home';
import {About} from './components/about/about';
import {RepoBrowser} from './components/repo-browser/repo-browser';
@Component({
selector: 'seed-app',
providers: [],
templateUrl: 'app/seed-app.html',
directives: [ROUTER_DIRECTIVES],
pipes: []
})
@RouteConfig([
new Route({ path: '/home', component: Home, name: 'Home', useAsDefault: true }),
new Route({ path: '/about', component: About, name: 'About' }),
new Route({ path: '/github/...', component: RepoBrowser, name: 'RepoBrowser' })
])
export class SeedApp implements OnActivate {
route: string;
constructor(public router: Router) {
this.route = this.router.hostComponent.name;
}
routerOnActivate(next: ComponentInstruction, prev:ComponentInstruction) {
console.log('hi');
this.route = next.urlPath;
}
}
То, что я пытаюсь сделать, - это отслеживать на этом уровне компонента текущий выбранный маршрут. Как вы можете видеть в моем конструкторе, я попытался получить this.router.hostComponent.name
, но это просто возвращает SeedApp.
Я также попытался использовать функцию routerOnActivate, чтобы получить ту, на которую мы переходим, но это никогда не вызывается.
Какое значение именно вы хотите? URL, имя маршрута, имя компонента (текущий, дочерний, ...)? –
@ GünterZöchbauer Честно говоря, любой из них. Я предполагаю, что название маршрута было бы проще всего –
вы хотите узнать название маршрута с центрального места? или если это будет знать название маршрута, когда вы переходите на конкретный маршрут определенного маршрута ??? – micronyks