2016-10-12 137 views
2

可以获取当前组件的名称吗?获取当前组件的名称

例如,如果我有localhost:3000/en/mycomponent,我会以this.router.url返回/en/mycomponent这是/language/component

我想要重定向语言的变化。

我可以让

this.router.navigate([this.lang, my component here]);

但我怎么可以从路由获取电流分量?

+0

您确切的要求是什么?它不清楚你的问题。你可以解释吗? – micronyks

+0

可以获取组件名称。但是,当前组件名称是什么意思? – micronyks

+0

@micronyks当前组件名称意味着我想要检测哪个组件是I.我想从服务 中调用它,例如,如果我位于'/ en/homecomponent'中我想要获取名称,它是'homecomponent ' – gsiradze

回答

1

我遇到了与上述相同的问题,并能够使用以下命令检索组件名称: this.route.routeConfig.component.name。这返回了一个我们可以比较的字符串值。

0

你可能会得到该组件名称,如下面,

export class MyComponent{ 

    constructor(
    private route: ActivatedRoute, 
    private router: Router 
) { 
    // Below will result in MyComponent 
    console.log(this.route.component.name);   
    } 
} 

说了这么多路由基于路径,而组件的名称。

希望这有助于!

+0

感谢您的回答。正如我在angularjs 2的lates版本中看到的那样,this.route.component没有属性名称 – gsiradze

+0

@gsiradze你正在检查哪个版本的Router?看到这[Plunker](http://plnkr.co/edit/psTX5s0AxscXtw4aBnZ4?p=preview)。检查危机list.component构造函数。干杯!! –

+1

我正在使用最新版本。也许它已被弃用? – gsiradze

0

只有组件名称是不够的。你可能需要的其他选项等..

如果第一段永远是你的language,像这样做:

let urlSegments = this.route.url.split('/'); 
urlSegments[1] = this.lang; 
this.router.navigate(urlSegments.join('/'));