2016-12-22 4 views
4

1つの単一コンポーネントを指す2つの異なるルートを持つことは可能でしょうか?たとえば:1つのルートに2つの角度コンポーネント

{ path: 'signin', component: SignInComponent }, 
{ path: 'tenant/:id/signin', component: SignInComponent } 

私はいくつかの有線振る舞いを持っているので、私は聞いてるのよ..

+0

はい、可能です。あなたのコンポーネント内の機能の実装をどのように処理するかについては、 – ranakrunal9

+0

はい、あなたは使えますか?あなたは直面している問題を教えていただけますか? –

+0

routerLinkActiveはアクティブ化されていません。例を更新しました。 – Vnuuk

答えて

4

はい、あなたは同じ構成要素を指す2つの異なるルートを使用することができます。しかし、ルートから、以前のルートと同じコンポーネントを使用する別のルートにナビゲートすると、角度はコンポーネントインスタンスを再利用します。コンポーネントの新しいインスタンスは作成されません。

'signin'から 'tenant /:id/signin'にナビゲートすると、angleは 'signin'のために作成したSignInComponentの同じインスタンスを使用します。 SignInComponentのコンストラクタとinitメソッドは呼び出されません。 initメソッドでobservableを使用できます。 ActivatedRouteのparamsメソッドは、観測可能です。

ルートが

ngOnInit() { 
    this.route.params 
    .switchMap((params: Params) => this.service.getHero(+params['id'])) 
    .subscribe((hero: Hero) => this.hero = hero); 
} 

switchMap演算子は、あなたが観測の現在の値を持つアクションを実行し、新しいにマップすることができ、あなたのActivatedRouteインスタンスです:あなたは、パラメータを抽出するために、このような何かを行うことができます観察可能。 このコードは、サービスからのルートで指定されたIDを持つヒーローを取得します。 このようなことができます。コードを投稿すると、正確に何をする必要があるか教えてくれます。

+0

角度はどのようにして異なるコンポーネントを区別しますか? 'user'と' user /:gender'の2つのルートがある場合、ナビゲーションはうまくいくが、 'user/male'から' user/female'には失敗する。 – Yang

+0

私はあなたの質問をしませんでした。説明していただけますか? – saurav1405

+0

申し訳ありませんが、私はそれをはっきり言っていませんでした。 '{path: 'user'、component:UserComponent}'と '{path: 'user /:gender'、component:UserComponent}の2つのルートが同じコンポーネントを使用しています。ナビゲーションは角度2の '/ user'から'/user/male'までうまく動作し、逆も同様です。しかし、 '/ user/male'と'/user/female'の間で失敗しました。つまり、コンポーネントが同じであっても後者のコンポーネントではなく、前のシナリオで新しいコンポーネントを作成するということです。 – Yang

関連する問題