2016-10-12 134 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('/'));