角2では、URLに表示されていないデータをナビゲートして渡す方法はありますか?角2 - URLにデータを表示せずにナビゲートする
複雑なオブジェクトを受け取るコンポーネントを作成したいが、これをURLに表示したくない。
ありがとうございます!
角2では、URLに表示されていないデータをナビゲートして渡す方法はありますか?角2 - URLにデータを表示せずにナビゲートする
複雑なオブジェクトを受け取るコンポーネントを作成したいが、これをURLに表示したくない。
ありがとうございます!
はいいいえこれを行うことができます.. 以下はこの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に表示されません。これが役立ちます。
答えがありがとうございます。しかし、私がRouteを定義するときにユーザーが何らかの行動をしたときにデータを定義する必要があります。 –
わかりませんが、appRoutes.path.data ..を常に動的に設定できます – refactor
あなたがnavigate
メソッドを使用している場合は、このようskipLocationChange
を追加:あなたはrouterLink
を使用している場合、このような属性としてそれを使用し、
this.router.navigate(['/your-path'], { skipLocationChange: true });
:
<a [routerLink]="['/your-path']" skipLocationChange></a>
心に留めてください。 skipLocationChange
を使用すると、新しいルートに移動した後にブラウザのルートが更新されないため、ユーザーがブラウザでヒットした場合、最初のパスの前のパスに送信されます。私はこれについての解決策をまだ見つけていない。
コンポーネントに注入されたサービスのデータを設定しますか? – KnowHoper
もっと簡単な方法がありますか?私はそれのためだけにサービスクラスを作ってはいけません。私はあなたがパラメータを隠すことを望むたびにクラスを行う必要がありますか? –
いいえルータは、URLを介して動的データを渡します。 URL内でオブジェクトをシリアライズしてエンコードすることはできますが、URL文字列で許可されていない文字は注意する必要があります。 共有サービスが推奨され、最もクリーンです。 – KnowHoper