2016-09-28 6 views
2

角2では、URLに表示されていないデータをナビゲートして渡す方法はありますか?角2 - URLにデータを表示せずにナビゲートする

複雑なオブジェクトを受け取るコンポーネントを作成したいが、これをURLに表示したくない。

ありがとうございます!

+0

コンポーネントに注入されたサービスのデータを設定しますか? – KnowHoper

+0

もっと簡単な方法がありますか?私はそれのためだけにサービスクラスを作ってはいけません。私はあなたがパラメータを隠すことを望むたびにクラスを行う必要がありますか? –

+0

いいえルータは、URLを介して動的データを渡します。 URL内でオブジェクトをシリアライズしてエンコードすることはできますが、URL文字列で許可されていない文字は注意する必要があります。 共有サービスが推奨され、最もクリーンです。 – KnowHoper

答えて

0

はいいいえこれを行うことができます.. 以下はこのlinkの例です。

const appRoutes: Routes = [ 
    { path: 'hero/:id', component: HeroDetailComponent }, 
    { path: 'crisis-center', component: CrisisCenterComponent }, 
    { 
    path: 'heroes', 
    component: HeroListComponent, 
    data: { 
     title: 'Heroes List' 
    } 
    }, 
    { path: '', component: HomeComponent }, 
    { path: '**', component: PageNotFoundComponent } 
]; 

この例では、オブジェクトを '英雄'のパスに渡していますが、これはURLに表示されません。これが役立ちます。

+0

答えがありがとうございます。しかし、私がRouteを定義するときにユーザーが何らかの行動をしたときにデータを定義する必要があります。 –

+0

わかりませんが、appRoutes.path.data ..を常に動的に設定できます – refactor

0

あなたがnavigateメソッドを使用している場合は、このようskipLocationChangeを追加:あなたはrouterLinkを使用している場合、このような属性としてそれを使用し、

this.router.navigate(['/your-path'], { skipLocationChange: true }); 

<a [routerLink]="['/your-path']" skipLocationChange></a> 

心に留めてください。 skipLocationChangeを使用すると、新しいルートに移動した後にブラウザのルートが更新されないため、ユーザーがブラウザでヒットした場合、最初のパスの前のパスに送信されます。私はこれについての解決策をまだ見つけていない。

関連する問題