2016-10-12 14 views
2

現在のコンポーネント名を取得できますか?例えば現在のコンポーネント名を取得

私はlocalhost:3000/en/mycomponentを持っていると私はそれが私が言語の変化にリダイレクトしたい/language/component

ある/en/mycomponent返しthis.router.urlへよ場合。

私は

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

を作ることができますしかし、どのように私は、ルーティングから現在のコンポーネントを得ることができますか?あなたは以下のようなコンポーネント名を取得することがあり

+0

あなたの正確な要件は何ですか?それはあなたの質問を通して明確ではありません。説明できますか? – micronyks

+0

コンポーネント名を取得することは可能です。しかし、現在のコンポーネント名はどういう意味ですか? – micronyks

+0

@micronyks現在のコンポーネント名は、どのコンポーネントが私であるかを検出したいという意味です。サービスから呼び出す場合 たとえば、 '/ en/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で見たようにthis.route.componentにはプロパティ名がありません – gsiradze

+0

@gsiradzeあなたがチェックしているルータのバージョンは?この[Plunker](http://plnkr.co/edit/psTX5s0AxscXtw4aBnZ4?p=preview)を参照してください。 crisis-list.componentコンストラクタをチェックインしてください。乾杯!! –

+1

最新バージョンを使用しています。多分それは廃止されましたか? – gsiradze

0

そのコンポーネント名が十分ではありません最初のセグメントは、常にあなたのlanguageある場合のみ..あなたが

を追加オプションをしたいので..にも、このようにそれを実行します。

let urlSegments = this.route.url.split('/'); 
urlSegments[1] = this.lang; 
this.router.navigate(urlSegments.join('/')); 
関連する問題