問題タブ [router-outlet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
942 参照

angular - Angular : 名前付きルーター アウトレットでの相対ナビゲーション

次のAngular Route構成があります

ManageComponentPreviewComponentEditComponentがレンダリングされるサンドボックス コンポーネントです。

ユーザー ユース ケースhttp://localhost:4200/#/(manage:manage/bar/12762)は、プレビュー コンポーネントに一致するユーザーをリダイレクトします。ここではすべて問題ありません。

から、ユーザーがボタンをクリックしたときに、ナビゲーションが終了したときに、へPreviewComponentの相対ナビゲーションを作成したいEditComponenthttp://localhost:4200/#/(manage:manage/bar/12762/add/foo)

私は試した

しかし毎回、ユーザーは にリダイレクトされhttp://localhost:4200/#/add/fooます。

どうすればこのナビゲーションを作成できますか?

0 投票する
2 に答える
13008 参照

angular - Angular 4 条件付きルーティング/コンポーネント

更新:以下を参照してください

したがって、ユーザーがアプリを使用しているときに、2 つの異なる組織を持つアプリがあるため、所属する組織に応じて異なるコンポーネントをロードしたいと考えています。

アプローチ 1: ルート ファイルで単純な条件を実行します。

これは機能しますが、ローカルホストでのみ、heroku にプッシュして本番環境で実行すると、アプリが間違ったコンポーネントを提供します。この user-route.ts ファイルにログ出力を追加しようとしましたが、localhost では期待どおりにログが表示されますが、本番環境では何もありません。localStorage の「user」オブジェクトはどちらの場合にも存在し、同一です。 注:このアプローチは Angular 2 でも正常に機能していましたが、Angular 4 では、運用環境で実行しているときにルート ファイルで何かが発生しているように見えますが、何を知っているのか.. if 条件付きブレークを作成する何らかの方法でコンパイルされている可能性があります。

アプローチ 2. ルートとガードを使用します。別の組織に 2 つの警備員を追加します。動作しますが、ルートは異なる必要があります。最初の空のルートは常にチェックされますが、2 番目のルートはチェックされないため、以下のコードは機能しません。パスを空にする必要があります ('')。

ガードと条件付きルーティングに関するすべてのトピックは、「ホーム」と「ログイン」のどちらを表示するかに関するものであるように思われるため、ガードを使用するより良い方法があるかどうかはわかりません。理想的には次のようなものです:

アプローチ 3. 親テンプレートで ngIf を使用します。これも機能しますが、ルートをさらに下って「DetailsComponent」に移動するときに、コンポーネントを手動で非表示および表示する必要があります

では、条件に基づいて別のコンポーネントを表示するなど、一見些細なことをどのように行うのでしょうか?

更新 1:

機能していませんが、最も近いのは、名前付きルーターアウトレットを使用することでした。

右側のコンポーネントがロードされますが、上部の 2 つのルートに対してのみロードされます。空のパスを持つもの。私が得るidパラメータを持つ2つのルートについて

URLを手動で入力すると、すべてが正しく読み込まれるため、これは奇妙です:/次で呼び出されます:

-

-