問題タブ [angular-route-guards]
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.
angular - Angular 9の同じルートパスの異なるコンポーネント
同じ構造を共有する一連の URL の正しいパスを解決しようとしています。私にはパスが/:id/:areaId
あり/:id/:cityId
、これは SEO の理由から設計によって行われます。実装するときは:areaId
、(API 呼び出しを行うことによって) 存在するかどうかを知る必要があり、存在しない場合は、そこ:cityId
に移動するために存在するかどうかを確認しようとします。
私が最初に考えたのはcanActivate
、サービスを注入する必要があり、私には自然に思えたので、自分のルートでした。ガードを実装してarea
コンポーネントに適用しましたが、ここで問題が発生したのcanActivate
はfalse
、ナビゲーションが停止したためです。私は urlMatchers の使用について読んできましたが、セグメントに必要なすべての情報があるとは思いませんし、同じルートを持つ Angular 2 の異なるコンポーネントのようなものを使用してサービスを注入することは私には間違っているように思われ、直接ナビゲートしようとすると失敗しますホームを介してナビゲートするのではなく、URL に移動します。直接ナビゲートする場合、インジェクターは定義されていません。
私の質問は、ガードまたは同様のものを使用して、ガードの結果が false の場合に「次の一致する URL に移動する」ことはできますか?
参考までに、私のガードは次のようになります。
angular - CanLoad ガードは Electron アプリケーション内で使用できますか?
ユーザーがアクセスできるアプリケーションの部分を決定する BE からの許可 DTO があります。NgRx セレクターを使用して、CanLoad ガード内で使用したいのですが、動作させることができません。
routes.ts
警備員:
console.log
何らかの理由で、このガードは起動しません (とで試しましたdebugger
)。に変更しcanActive
て「親」ルートファイルで実行すると、どちらも起動しません。起動するのは、変更しcanActive
て「子」routes.fileに移動したときだけです
Acquisition.routes.ts
編集: これは、モジュールがロードされると「CanLoad」ガードが再度起動されないという事実が原因のようです。Electron がすべてを一度にロードする可能性があるため、このガードを呼び出すことはできませんか?