2017-07-18 5 views
0

あるコンポーネントから別のコンポーネントに移動し、それに何らかのデータをナビゲートしたいと考えています。ここでコンポーネントにナビゲートしてデータをバインドします

コードです:これは動作します

this.route.params.subscribe(params => { 
    //assign it to some component member, like 
    this.name = (JSON.parse(params))['name']; 
}); 

が、ページがナビゲートします後、それは、私に自信を与えるものではありません:SomeComponentで

this.router.navigate(['some-component', { name: 'Some Name' }]); 

私はこのようなルートのparamsをキャッチしていますSomeComponentビュー、URLが悪く見え、ページの再読み込み後に状態を保持しません。

私は経路パラメータを避けたいと思います。

SomeComponentにナビゲートし、内部で使用され、this.nameにバインドされた値を送信する正しい方法は何でしょうか。

これらの2つのコンポーネントは、子/親関係にありません。

+0

"url looks bad"とはどういう意味ですか? URLはどのように見えますか? –

+0

これはサイドのことですが、URLの外観はそれほど重要ではありません。私はかなり基本的なものを探していると思う。コンポーネントに移動し、パブリックプロパティに関するデータを設定します。 – eomeroff

+0

コンポーネント間でデータを共有する場合、共有サービスは親子関係が存在しない最も一般的なシナリオです:https://angular.io/guide/component-interaction#parent-and-children-communicate- via-a-service 'Subject'の代わりに(例えば)' BehaviorSubject'を使うだけです。 – Alex

答えて

1

%20に変換されるスペースはありますか?
そうなら、それはデフォルトのURLエンコーディングです。
thisをチェックしてください。
構文的には、私がhereから学んだことと一致するようです。
おそらくURL Encodeが必要ですか?

encodeURI('Some Name') 
+0

ルートパラメータを避ける方法はありますか?私がオブジェクト全体を送信する必要がある場合はどうなりますか? – eomeroff

+1

いくつかのオプションがあります。 IDを送信し、サービスを使用してドメインモデルのデータを検索します。オブジェクトをクッキーに格納し、再度取得します。しかし、クライアントブラウザでCookieが無効になっていると、そのアプローチを破る可能性があります。 LocalStorageもあります。あなたが保管できる金額に上限がありますが。 Googleの「ローカルストレージサイズの制限」LocalStorageとSessionStorageは最大10MBのストレージを使用できますが、実際には両方の合計です。 IndexedDBの場合は、デスクトップで最大50MB、モバイルで5MBを無料で使用できます。しかし、ユーザーは許可を許可することによって制限を削除することができます – JGFMK

+0

https://stackoverflow.com/a/45166499/495157私はここでクッキーの解決策を与えました – JGFMK

関連する問題